2012-01-19 13 views
9

Wiem, że jest to jakiś specjalny problem z postaciami, ale nie wiem jak go rozwiązać.Echo w powłoce -n nie jest drukowane w prawidłowy sposób

wpisuję w konsoli

echo "-n" 

i nic wydrukowany :(

Próbowałem też z

echo -e "-n" 

do wykonywania znaków specjalnych (jeden uciekł z sekwencji), ale ponownie nic się nie stało

jak mogę wydrukować "-n"?

+2

Imponujące, że nigdy nie natknąć się tego problemu. Dobry! – wallyk

Odpowiedz

5

Oto jeden sposób:

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

on ucieka - jak \x2d.

Bardziej szczegółowa sposobem jest wydrukowanie dwóch znaków oddzielnie:

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

Tutaj -n instruuje pierwszy echo aby nie drukować nowej linii; nie jest to związane z drukowaniem w postaci -n. :)

+0

Definicja echa POSIX nie gwarantuje, że to zadziała. W rzeczywistości jakakolwiek implementacja, w której 'echo -e' nie wypisuje' -e' na wyjściu, narusza standard, w którym '-n' jest jedyną dopuszczalną opcją [i, choć dopuszczalne, nie jest dobrze zdefiniowane:' echo -n' po prostu sprawia, że ​​wynik jest niezdefiniowany, a więc nie musi już być zgodny z żadną konkretną specyfikacją]. –

+0

W bash 'shopt -s xpg_echo' spełnia standardy 'echo', gdy' set -o posix' jest również włączony, co oznacza, że ​​podane tu hasło 'echo -e' przestanie działać. –

11

Spróbuj

printf "%s\n" -n 

lub

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

Tak, 'printf' jest silniejszy i bardziej spójny niż' echo'. –

Powiązane problemy