jwb*_*ove 0 bash shell arguments parameter-passing
我正在使用一个选项驱动的bash脚本,它将使用getopts.该脚本的情况是,它可以接受多个选项和只接受一个选项的特定情况.在测试一些案例时,我遇到了这个问题,我已经将这个问题简化为伪代码.
for arg in "$@"; do
echo ${arg}
done
echo "end"
Run Code Online (Sandbox Code Playgroud)
在下面运行返回:
$ ./test.sh -a -b
-a
end
Run Code Online (Sandbox Code Playgroud)
我正在运行bash 4.1.2,为什么不在空行返回-b?我认为这与' - '有关.
我无法重现您的确切错误,但这是使用的风险echo:如果$arg 是有效选项,它将被视为这样,而不是要打印的字符串.printf改为使用:
printf '%s\n' "$arg"
Run Code Online (Sandbox Code Playgroud)