bash - 通过 Bash 传递命令行参数

标签 bash shell unix scripting command-line-arguments

在复习 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 中的“特殊参数”,它始终计算为脚本的名称,并在脚本的开头设置。看起来这也意味着它在某种程度上是全局的,因为它不能被重新分配。

有关更多信息,这是一个很好的引用:

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

关于bash - 通过 Bash 传递命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467253/

相关文章:

java - 从 shell 脚本运行 java 时为 "No such file or directory"

bash - 在公共(public)列上合并两个文件并使用 awk 打印所有列

linux - 双重使用 bash 脚本 - 源代码和 exec 子 shell?动态返回/退出?

bash - 环境变量不在父 shell 中持久化

regex - 如果第一个空格是 2 个空格,则在文件中将其设置为 1

shell - 集成 readline 的 kill-ring 和 X11 剪贴板

bash - 在 bash 中解析电子邮件中的发件人姓名

bash - 命令替换 $(foo) 是 bashism 吗?

bash - 如何从 tmux 外部查看 tmux session /窗口的预览?

linux - bash 脚本查找排列总数