使用命令`echo -ne"hello \n"`进行Bash vs. Dash行为

Que*_*tin 5 bash dash-shell

echo -ne "hello\n"使用bash和dash 使用相同的命令获得了不同的行为.见下文 :

$ bash -c 'echo -ne "hello\n"'
hello
$ dash -c 'echo -ne "hello\n"'
-ne hello
Run Code Online (Sandbox Code Playgroud)

这是为什么 ?我根本不明白......

我的系统:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:   precise
Run Code Online (Sandbox Code Playgroud)

Eta*_*ner 8

POSIX规范echo不支持任何参数.在这里看到它.

虽然规范提到-n它确实这样说,它不是一个选项,是一个实现定义的案例或被视为一个字符串.

所以dash正是这样做的.

bash另一方面,在许多方面存在不合规行为.

这就是为什么echo通常不鼓励使用printf具有更好的规格和更好的便携行为的使用.