我使用的 bash 脚本需要命令行参数,前面是破折号,后面是文件名:
./script -abc file_name
在脚本中,我尝试使用以下方法打印出脚本的所有参数:
回显“$@”
显示:
-abc file_name
这是预期的。除了当我单独使用字母“n”时,一切都打印得很好,即:
./script -n 文件名
脚本中生成的 echo 语句仅打印出 file_name 参数,而根本不打印“-n”参数。此行为仅在字母“n”单独出现时发生。当我尝试使用“-nx”或“n”与任何其他字母时,echo 语句打印得很好......
为什么这个 echo 语句本身不能与“-n”一起使用?
最佳答案
-n
或 -e
是 echo
命令的有效选项。
因此它被 echo 命令消耗,并且只显示剩余的文本。
这是 echo
的一个已知问题,为了避免这个问题,您可以使用 printf
。
printf "%s\n" "$*"
关于使用 "-n"时,Bash "$@"参数无法被脚本识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59159916/