通过Bash传递命令行参数

3

在复习bash(已经有一段时间了)时,我惊讶地发现执行以下代码时,保存为script.sh:

echo "Arg 0 to script.sh: $0"
echo "Arg 1 to script.sh: $1"
function echo_args
{
    echo "Arg 0 to echo_args: $0"
    echo "Arg 1 to echo_args: $1"
}
echo_args

就像这样:

>> ./script.sh argument

输出如下内容:
Arg 0 to script.sh: ./script.sh
Arg 1 to script.sh: argument
Arg 0 to echo_args: ./script.sh
Arg 1 to echo_args:

我惊讶地发现,当$1没有被同样处理时,script.sh的$0作为$0传递给echo_args的值为$0。 在我看来,它应该是都这样或都不这样。

如有任何疑问,请告知。


如何在Bash中解析命令行参数? 访问bash命令行参数 $@ vs $* 最佳方法在Bash中解析命令行参数?将命令行参数传递给bash脚本 - jww
1个回答

3

$0 是bash中的“特殊参数”,它总是被解析为脚本的名称,并在脚本开始时设置。看起来这也意味着它有点全局,因为它不能被重新分配。

如果需要更多信息,这是一个相当不错的参考:

http://bash.cyberciti.biz/guide/$0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接