在刷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中的“特殊参数”,始终求值为脚本名称,并在脚本开始处设置。看起来这也意味着它有些全局,因为它无法重新分配。
有关更多信息,这是一个很好的参考:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句