2012-01-19 51 views
9

我知道这是某种特殊字符问题,但我不知道如何解决它。在shell中回显-n没有打印正确的东西

我在控制台

echo "-n" 

并没有什么键入Get印刷:(

我也

echo -e "-n" 

试图执行特殊字符(一个来自序列逃脱),但再次什么都没有发生

我该如何打印“-n”?

+2

令人印象深刻的,我从来没有过这个问题上运行。好的! – wallyk

回答

5

这里有一种方法:

[email protected]:~$ echo -e '\x2dn' 
-n 

它会把-\x2d

一个更详细的方式是单独打印两个字符:

[email protected]:~$ echo -n -; echo n 
-n 

这里,-n指示第一echo不打印一个换行;它与正在打印的-n无关。 :)

+0

回声的POSIX定义不能保证这个工作。实际上,echo -e没有在其输出中打印“-e”的任何实现都违反了标准,只有'-n'是唯一允许的选项[并且,虽然允许,但没有明确定义: echo -n'只是使输出不确定,因此不再需要符合任何特定的规范]。 –

+0

在bash中,当'set -o posix'也被启用时,'shopt -s xpg_echo'使其符合'echo'标准,这意味着这里给出的'echo -e' hack将不再起作用。 –

11

尝试

printf "%s\n" -n 

printf "%s\n" '-n' 
+2

是的,'printf'比'echo'更加强大和一致。 –