首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unix中sh和sh -c的区别

unix中sh和sh -c的区别
EN

Stack Overflow用户
提问于 2015-01-30 06:48:54
回答 1查看 1.2K关注 0票数 0

假设我有如下所示的脚本。

demo.sh:

代码语言:javascript
复制
name=$1    
age=$2
echo $name
echo $age

当我执行脚本时

代码语言:javascript
复制
sh demo.sh ARUN 24

产出如下:

代码语言:javascript
复制
ARUN
24

但是,当我执行脚本时

代码语言:javascript
复制
sh -c demo.sh ARUN 24

输出不算什么。

我知道如果我使用sh -c参数,将从$0开始分配参数。但是只有文件名被分配给$0。在使用sh -c时,如何分配多个参数?请解释一下它是如何工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-30 06:51:44

请使用以下语法:

代码语言:javascript
复制
sh -c "demo.sh ARUN 24"

在您的示例中,传递给sh命令的这两个参数,而不是demo.sh脚本。将它们放入引号中,将其传递给脚本。

注意,最简单的方法是使脚本可执行,并向其添加一条hashbang (#!)行。然后脚本将如下所示:

代码语言:javascript
复制
#!/bin/sh

name=$1
age=$2
echo $name
echo $age

通过以下方式使其可执行:

代码语言:javascript
复制
chmod +x demo.sh

然后按如下方式运行它(如果没有解释器sh,现在从#!行收集解释器):

代码语言:javascript
复制
./demo.sh ARUN 24
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28230623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档