Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux unix中sh与sh-c的区别_Linux_Bash_Shell_Unix - Fatal编程技术网

Linux unix中sh与sh-c的区别

Linux unix中sh与sh-c的区别,linux,bash,shell,unix,Linux,Bash,Shell,Unix,考虑到我有下面给出的脚本 demo.sh: name=$1 age=$2 echo $name echo $age 当我像这样执行脚本时 sh demo.sh ARUN 24 sh -c demo.sh ARUN 24 输出为: ARUN 24 但是,当我像这样执行脚本时 sh demo.sh ARUN 24 sh -c demo.sh ARUN 24 输出什么都不是 我知道如果我使用sh-c参数将从$0开始分配。但是只有文件名被分配给$0。 使用时如何分配多个参数sh-c?

考虑到我有下面给出的脚本

demo.sh:

name=$1    
age=$2
echo $name
echo $age
当我像这样执行脚本时

sh demo.sh ARUN 24
sh -c demo.sh ARUN 24
输出为:

ARUN
24
但是,当我像这样执行脚本时

sh demo.sh ARUN 24
sh -c demo.sh ARUN 24
输出什么都不是

我知道如果我使用
sh-c
参数将从
$0
开始分配。但是只有文件名被分配给
$0
。 使用时如何分配多个参数
sh-c

请解释它是如何工作的。

请改用以下语法:

sh -c "demo.sh ARUN 24"
在您的例子中,这两个参数传递给
sh
命令,而不是
demo.sh
脚本。将它们放在引号中,以便将它们trought
sh
传递给脚本

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

#!/bin/sh

name=$1
age=$2
echo $name
echo $age
使用以下命令使其可执行:

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