Karena seperti yang dikatakan manual bash tentang substitusi perintah:
Bash melakukan perluasan dengan menjalankan perintah dan mengganti substitusi perintah dengan output standar dari perintah, dengan setiap baris baru yang tertinggal dihapus.
Jadi, dengan menambahkan \b
Anda mencegah penghapusan \n
.
Cara yang lebih bersih untuk melakukannya adalah dengan menggunakan $''
mengutip, seperti ini:
IFS=$'\n'
Saya baru ingat cara termudah. Diuji dengan bash di debian wheezy.
IFS="
"
jangan bercanda :)
Ini peretasan karena penggunaan echo
dan substitusi perintah.
prompt> x=$(echo -en "\n")
prompt> echo ${#x}
0
prompt> x=$(echo -en "\n\b")
prompt> echo ${#x}
2
$()
strip mengikuti baris baru dan \b
mencegah \n
dari menjadi baris baru yang tertinggal sementara sangat tidak mungkin muncul di teks apa pun. IFS=$'\n'
adalah cara yang lebih baik untuk menyetel IFS agar terbagi pada baris baru.