我知道这是某种特殊字符问题,但我不知道如何解决它。在shell中回显-n没有打印正确的东西
我在控制台
echo "-n"
并没有什么键入Get印刷:(
我也
echo -e "-n"
试图执行特殊字符(一个来自序列逃脱),但再次什么都没有发生
我该如何打印“-n”?
我知道这是某种特殊字符问题,但我不知道如何解决它。在shell中回显-n没有打印正确的东西
我在控制台
echo "-n"
并没有什么键入Get印刷:(
我也
echo -e "-n"
试图执行特殊字符(一个来自序列逃脱),但再次什么都没有发生
我该如何打印“-n”?
这里有一种方法:
[email protected]:~$ echo -e '\x2dn'
-n
它会把-
为\x2d
。
一个更详细的方式是单独打印两个字符:
[email protected]:~$ echo -n -; echo n
-n
这里,-n
指示第一echo
不打印一个换行;它与正在打印的-n
无关。 :)
回声的POSIX定义不能保证这个工作。实际上,echo -e没有在其输出中打印“-e”的任何实现都违反了标准,只有'-n'是唯一允许的选项[并且,虽然允许,但没有明确定义: echo -n'只是使输出不确定,因此不再需要符合任何特定的规范]。 –
在bash中,当'set -o posix'也被启用时,'shopt -s xpg_echo'使其符合'echo'标准,这意味着这里给出的'echo -e' hack将不再起作用。 –
尝试
printf "%s\n" -n
或
printf "%s\n" '-n'
是的,'printf'比'echo'更加强大和一致。 –
令人印象深刻的,我从来没有过这个问题上运行。好的! – wallyk