bash“$ @”不使用以' - '开头的参数

时间:2017-10-26 17:05:57

标签: bash shell arguments parameter-passing

我正在开发一个使用getopts的选项驱动的bash脚本。该脚本的情况是,它可以接受多个选项和只接受一个选项的特定情况。在测试一些案例时,我遇到了这个问题,我已经将这个问题简化为伪代码。

for arg in "$@"; do
  echo ${arg}
done
echo "end"

在下面运行返回:

$ ./test.sh -a -b
-a

end

我正在运行bash 4.1.2,为什么不在空行返回-b?我认为这与' - '有关。

1 个答案:

答案 0 :(得分:5)

我无法重现您的确切错误,但这是使用echo的风险:如果$arg 是有效选项,则会将其视为此类,而不是要打印的字符串。请改用printf

printf '%s\n' "$arg"