使用 "-n"时,Bash "$@"参数无法被脚本识别

标签 bash echo

我使用的 bash 脚本需要命令行参数,前面是破折号,后面是文件名:

./script -abc file_name

在脚本中,我尝试使用以下方法打印出脚本的所有参数:

回显“$@”

显示:

-abc file_name

这是预期的。除了当我单独使用字母“n”时,一切都打印得很好,即:

./script -n 文件名

脚本中生成的 echo 语句仅打印出 file_name 参数,而根本不打印“-n”参数。此行为仅在字母“n”单独出现时发生。当我尝试使用“-nx”或“n”与任何其他字母时,echo 语句打印得很好......

为什么这个 echo 语句本身不能与“-n”一起使用?

最佳答案

-n-eecho 命令的有效选项。

因此它被 echo 命令消耗,并且只显示剩余的文本。
这是 echo 的一个已知问题,为了避免这个问题,您可以使用 printf

printf "%s\n" "$*"

关于使用 "-n"时,Bash "$@"参数无法被脚本识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59159916/

相关文章:

python - 练习 Linux Shell 脚本编写

具有混合条件的 bash while 循环

linux - sh Linux 中的预期回显截断

bash - 使用 GitLab-CI 在 Docker 容器中找不到文件

linux - 管道命令的回显输出

linux - 如何扩展以破折号 (-) 开头的文件名

node.js - Node 服务器无法启动

linux - 尝试获取具有最大行数的文件以使用行号打印

php - 有没有办法在 PHP 中重定向输出?

php - 如何用php检查字符串是否在数组中?