commandMac OS X中的2.6.0版本的实用程序似乎不遵守传入的echo命令参数.
如果这是一个合法的错误 - 你能否请我指向该实用程序的项目页面.谢谢!
$ command echo -e "activate\ndeactivate"
activate
deactivate
Run Code Online (Sandbox Code Playgroud)
$ command echo -e "activate\ndeactivate"
-e activate\ndeactivate
Run Code Online (Sandbox Code Playgroud)
$ command ls -al
total 3
drwxr-xr-x 13 siva staff 442 Sep 28 10:52 .
drwxr-xr-x 7 siva staff 238 Sep 19 14:21 ..
drwxr-xr-x 13 siva staff 442 Sep 28 10:52 .git
$ command ls -a1
.
..
.git
$ echo -e "activate\ndeactivate"
activate
deactivate
Run Code Online (Sandbox Code Playgroud)
echo -e是一个非标准的bash扩展.它不仅不是标准所要求的,它甚至不被标准所允许,它明确规定"实现不应支持任何选项".
bash通过尊重-e选项来打破标准(除非设置了两个posix和xpg_echo选项,在这种情况下它的行为与外部echo命令相同).
因此,当您运行echoOS供应商提供的外部命令时,它是符合http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html的实现,它-e通过打印字符串来响应.
作为POSIX兼容的替代品echo -e "$foo",使用printf '%b\n' "$foo".