Saya membuang string dengan hexdump
seperti ini 2031 3334 2e30 0a32 2032 3331 302e 000a
. Jelas bahwa itu 0x0a
adalah karakter baris baru, namun, ketika saya mencoba untuk menggemakan string ini, saya selalu dapat 1 430.2 2 13.0
- baris baru diganti dengan spasi, bahkan saya menggunakan -e
bendera.
Apa masalahnya? Apakah tailing \0
merusak output? Apakah ada alternatif untuk mencetak 0x0a
baris baru?
Terima kasih dan salam hangat.
echo -e
. Terima kasih, saya menemukan solusinya.printf "...\n"
alih-alihecho
.Jawaban:
Karakter baris baru dengan
echo
perintah adalah "\ n". Ambil contoh berikut:Akan menghasilkan output
"-E" parameter adalah penting di sini.
sumber
"echo -e ..."
bergantung pada gema bash untuk bekerja dengan benar (misalnya,dash
hanya akan mencetak "-e"); tetapi '/ bin / echo' mungkin (atau mungkin tidak) juga berfungsi. Sayangnya (mungkin dengan tepat), ada banyak gema di sekitar, dan Anda tidak benar-benar ingin peduli yang mana yang akan Anda dapatkan. Menggunakan'printf "....\n"
adalah pilihan yang lebih portabel di seluruh env dan shell.POSIX 7 mengatakan Anda tidak bisa
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
tidak didefinisikan dan backslash adalah implementasi didefinisikan:kecuali Anda memiliki ekstensi XSI opsional.
Jadi gunakan
printf
saja:yang File Format Notasi :
Perlu diingat juga bahwa Ubuntu 15.10 dan sebagian besar distro mengimplementasikan
echo
keduanya sebagai:help echo
which echo
yang dapat menyebabkan beberapa kebingungan.
sumber
Saya akhirnya memformat string ini dengan benar
printf "$string"
. Terima kasih semua.sumber
$string
yang kamu bicarakan? Bagaimana ini terhubung dengan pertanyaan? Apa yang tidak dilibatkan\n
seperti dalam dua jawaban lainnya?