繁体   English   中英

通过Bash传递命令行参数

[英]Passing command line arguments through Bash

刷上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:

我很惊讶地看到$ 0的script.sh作为$ 0传递给echo_args,而$ 1的处理方式并不相同。 在我看来它应该是两者兼而有之。

任何澄清表示赞赏。

$ 0是bash中的“特殊参数”,它始终计算为脚本的名称,并在脚本的开头设置。 看起来这也意味着它有点全局,因为它无法重新分配。

有关更多信息,这是一个非常好的参考:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM