2012-01-19 49 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'更加強大和一致。 –