1

这里发生了什么事 :

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

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

4

1 回答 1

4

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

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

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


此外,还man which显示了这一点:

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

Bash不是严格符合 POSIX 标准的,因此 的返回值which可能不同(在这种情况下它确实是因为echo内置的)。


如需进一步阅读,请参阅bash 脚本中的 echo output -e 参数的答案。我怎样才能防止这种情况?

于 2012-06-19T10:38:20.880 回答