unix 中 sh 和 sh -c 的区别

Difference between sh and sh -c in unix

考虑一下我有如下所示的脚本。

demo.sh:

name=    
age=
echo $name
echo $age

当我执行脚本时

sh demo.sh ARUN 24

输出为:

ARUN
24

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

sh -c demo.sh ARUN 24

输出什么都没有。

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

改为使用此语法:

sh -c "demo.sh ARUN 24"

在您的情况下,这两个参数传递给 sh 命令,而不是 demo.sh 脚本。将它们放在引号中以将它们传递给 sh 到脚本。

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

#!/bin/sh

name=
age=
echo $name
echo $age

使其可执行:

chmod +x demo.sh

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

./demo.sh ARUN 24