我正在使用一个 bash 脚本,它需要命令行参数,前面有一个破折号,后跟一个文件名:
./script -abc file_name
Run Code Online (Sandbox Code Playgroud)
在脚本中,我尝试使用以下命令打印出脚本的所有参数:
echo "$@"
显示:
-abc file_name
Run Code Online (Sandbox Code Playgroud)
这是预期的。除了我单独使用字母“n”时,一切都打印得很好,即:
./script -n file_name
脚本中生成的 echo 语句只打印出file_name参数,根本不打印“-n”参数。此行为仅发生在字母“n”本身。当我用任何其他字母尝试“-nx”或“n”时,echo 语句打印得很好......
为什么这个 echo 语句本身不能与“-n”一起使用?
的-n或者-e是有效的选项echo命令。
因此它被 echo 命令消耗,并且只显示剩余的文本。
这是一个已知问题,echo为了避免这种情况,您可以使用printf.
printf "%s\n" "$@"
Run Code Online (Sandbox Code Playgroud)