0

我是Linux初学者,一直在学习shell脚本,对位置参数理解有些困难。我首先在终端中输入如下内容:

set this is a great place

我跑:

echo $1

表明:

this

然后我在 shell 脚本文件test.sh中尝试了一些东西:

#!/bash/sh
echo $1

我在终端上运行 shell 脚本:

sh test.sh

它什么也没显示。而且,如果我运行:

sh test.sh hello

它会在屏幕上显示你好。但是,如果我只是运行:

echo $1

在终端命令行上。它仍然会显示这个

为什么 1 美元在两个地方的价值不同?

4

2 回答 2

0

$1($2 等)是当前 shell(或 shell 脚本)的参数

内置的 set 用新的参数替换当前的参数集。

% cat test.sh
#!/bash/sh
echo $1
set X Y Z
echo $1

# No args given, so $1 will start set to A, set will change it to X
% sh test.sh

X
# Args given, $1 will start set to A, set will change it to X
% sh test.sh A B C
A
X
于 2012-07-05T06:35:23.903 回答
0

PL。看看这个解释是否有帮助,

您可以在这里考虑两个进程,一个是当前 shell 具有一组变量。

打字时,

set this is a great place 

当前 shell 的变量得到更新。

现在当你输入

sh test.sh  

这意味着您现在拥有一个带有自己的变量集的单独进程。现在这两组变量不一样了。所以在这种情况下,你会得到不同的输出。

可以在下面找到来自 Apple 的一篇写得很好的 shell 脚本教程,

https://developer.apple.com/library/mac/#documentation/opensource/conceptual/shellscripting/Introduction/Introduction.html

于 2012-07-05T06:45:26.010 回答