echo"-n"不会打印-n?

MrD*_*oom 12 bash echo

这个问题非常相似.

我正在使用BASH中的自动脚本迭代一些事情.偶尔脚本会遇到"-n",echo会尝试解释这个.

试图这样:

 $ POSIXLY_CORRECT=1 /bin/echo -n
Run Code Online (Sandbox Code Playgroud)

 $ POSIXLY_CORRECT=1 /bin/echo "-n"
Run Code Online (Sandbox Code Playgroud)

但它每次都解释了这个论点.

然后这个,但它可以在字符串中点击转义字符,这就是为什么我不想对所有输入应用空字符并使用-e.

$ echo -e "\x00-n"
-n
Run Code Online (Sandbox Code Playgroud)

printf是可能的,但是要避免,除非没有其他选项(并非所有机器都将printf作为实用程序).

$printf "%s" "-n"
-n
Run Code Online (Sandbox Code Playgroud)

那么有没有办法让回声打印"-n"?

ric*_*ici 8

printf应该是所有shell中内置的,除非你的某些机器有很旧的shell版本.它已经内置bash了很长时间.它可能比便携式更便携echo -e.

否则,真的没办法得到echo它关心的选项.

编辑:从答案到另一个类似的问题; printf使用这个方便的无数字版权保留包装器来避免引用问题:

ech-o() { printf "%s\n" "$*"; }
Run Code Online (Sandbox Code Playgroud)

(那是ech-o,如"没有选项")

  • 哈!+1实际适当使用"$*"` (3认同)