Tampaknya praktik normal akan menempatkan pengaturan IFS di luar loop sementara agar tidak mengulangi pengaturannya untuk setiap iterasi… Apakah ini hanya gaya kebiasaan “monyet lihat, monyet lakukan”, seperti yang terjadi pada monyet ini sampai saya membaca baca pria , atau apakah saya melewatkan jebakan halus (atau sangat jelas) di sini?
Jawaban yang Diterima:
Perangkapnya adalah itu
IFS=; while read..
menyetel IFS
untuk seluruh lingkungan shell di luar loop, sedangkan
while IFS= read
mendefinisikan ulang hanya untuk read
seruan (kecuali di shell Bourne).
Anda dapat memeriksanya dengan melakukan perulangan seperti
while IFS= read xxx; ... done
lalu setelah loop seperti itu, echo "blabalbla $IFS ooooooo"
cetakan
blabalbla ooooooo
sedangkan setelah
IFS=; read xxx; ... done
IFS
menginap didefinisikan ulang:sekarang echo "blabalbla $IFS ooooooo"
cetakan
blabalbla ooooooo
Jadi jika Anda menggunakan formulir kedua, Anda harus ingat untuk mengatur ulang:IFS=$' tn'
.
Bagian kedua dari pertanyaan ini telah digabungkan di sini, jadi saya telah menghapus jawaban terkait dari sini.