echo -eve echo $'...'her ikisi de aşağıdaki kaçış dizilerini desteklemeleri bakımından benzerdir:
\a alert (bell)
\b backspace
\e
\E an escape character
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\0nnn the eight-bit character whose value is the octal value nnn (zero to three octal digits)
\xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
\uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
\UHHHHHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)
Farklılıkları var. Yukarıdakilere ek olarak, echo -eşunları destekler:
\c suppress further output
\0nnn the eight-bit character whose value is the octal value nnn (zero to three octal digits)
Buna karşılık, $'....'şunları destekler:
\' single quote
\" double quote
\nnn the eight-bit character whose value is the octal value nnn (one to three digits)
\cx a control-x character
İkisi arasında \cuzantıların uyumsuz olduğuna dikkat edin :
$ echo -e 'start\n\cIstop'
start
$ echo $'start\n\cIstop'
start
stop
İçin echo -eyukarıdaki \cve böylece göz ardı ederek, daha çıkış bastırır Istop. Buna karşılık, için $'...', \cIbir sekme olarak yorumlanır.
Görsel olarak benzer form: $"..."
Buna karşılık $'...', işlevi $"..."oldukça farklıdır. İçerdiği dizginin geçerli yerel ayara göre çevrilmesine neden olur.
echo -etartışma
echo -eevrensel olarak mermiler tarafından desteklenmez ve birçoğu -eseçeneği tasarım hatası olarak görür. Gözlemek:
$ ls
-e -n
$ echo *
$ printf "%s\n" *
-e
-n
Gördüğünüz gibi, yazdırdığınız şey echobir tire işareti ile başlarsa, sonuçlar beklenmedik olabilir. Yazdıracağınız ilk dizenin echobir tire işareti ile başlamadığından emin değilseniz, muhtemelen daha iyi durumda olursunuz printf.
Bu nedenlerle POSIX standardı şu sonuca varır :
Yeni uygulamaların echo yerine printf kullanmaları önerilir.
bashSon 22 yıldır sürdüren Chet Ramey de aynı fikirde :
[N] yeni kod printf kullanmalıdır.
Hello\nWorld.-eKaçış karakterlerini yorumlamak için anahtara ihtiyacınız var .