Linux unix中sh与sh-c的区别
考虑到我有下面给出的脚本 demo.sh: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?
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
脚本。将它们放在引号中,以便将它们troughtsh
传递给脚本
注意:最简单的方法是使脚本可执行,并在其中添加hashbang(#!
)行。脚本将如下所示:
#!/bin/sh
name=$1
age=$2
echo $name
echo $age
使用以下命令使其可执行:
chmod +x demo.sh
然后按如下方式运行它(没有解释器sh
,解释器现在从#!
行收集):