GNU/Linux >> Belajar Linux >  >> Linux

Mengapa `sementara Ifs=Read` Sering Digunakan, Alih-alih `ifs=; Saat Baca..`?

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.


Linux
  1. Mengapa Pc Membeku Saat Saya Menyalin File Ke Flashdisk?

  2. Dalam `sementara Ifs=Read..`, Mengapa Ifs Tidak Berpengaruh?

  3. Mengapa "sementara Baca" Ini Bekerja Di Terminal, Tapi Tidak Di Skrip Shell?

  1. Mengapa Nomor Drive/partisi Masih Digunakan?

  2. Mengapa pilih digunakan di Linux

  3. mengapa u8 u16 u32 u64 digunakan sebagai pengganti unsigned int dalam pemrograman kernel

  1. Mengapa *tidak* Mengurai `ls` (dan Apa yang Harus Dilakukan)?

  2. Mengapa kami memiliki 3 jenis pilihan-X di LINUX?

  3. Mengapa UASP tidak digunakan