在复习 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:
我很惊讶地看到 script.sh 的 $0 被作为 $0 传递给 echo_args 而 $1 没有被类似地对待。在我看来应该两者兼而有之。
如有任何澄清,我们将不胜感激。
最佳答案
$0 是 bash 中的“特殊参数”,它始终计算为脚本的名称,并在脚本的开头设置。看起来这也意味着它在某种程度上是全局的,因为它不能被重新分配。
有关更多信息,这是一个很好的引用:
关于bash - 通过 Bash 传递命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467253/