【问题标题】:bash echo command -e arguments ignored using echo full path使用回显完整路径忽略 bash echo 命令 -e 参数
【发布时间】:2012-06-19 10:35:28
【问题描述】:

这里发生了什么:

$ 回声 $SHELL /bin/bash $ 回声 -e "foo" 富 $哪个回声 /bin/回声 $ /bin/echo -e "foo" -e 富

最后一个输出应该是“foo”,就像直接使用echo时一样。

【问题讨论】:

  • 然后确保执行的是 bash 内置 echo:bash echo -e "foo"

标签: bash echo


【解决方案1】:

/bin/echo 是一个程序,它不同于 Bash 内置的echo 命令。

根据POSIX standardecho 不应该带任何参数。 Bash echo 命令不遵循此标准,GNU Coreutils 版本也不遵循。其他版本可能更严格。

尝试通过使用--version 标志调用/bin/echo 来找出它是什么版本,或者查看它是否可以通过--help 标志为您提供一些帮助。


另外,man which 显示:

which 返回将被执行的文件(或链接)的路径名 在当前环境中,它的参数是否作为命令给出 严格符合 POSIX 的外壳。

Bash 严格遵守 POSIX,因此 which 的返回值可能不同(在这种情况下确实如此,因为 echo 内置)。


如需进一步阅读,请查看echo outputs -e parameter in bash scripts. How can I prevent this?的答案

【讨论】:

  • 但是,type echo 显示“echo 是内置的 shell”。 (至少对我来说。)
猜你喜欢
  • 2014-02-15
  • 2023-03-23
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 2018-12-02
  • 1970-01-01
  • 2020-12-30
相关资源
最近更新 更多