whilememiliki sintaksis interesitng. Anda dapat menempatkan beberapa perintah sebelum do ... whileloop, dan case yang dimaksud mungkin perlu menyulap fitur ini, tergantung pada persyaratan khusus Anda: apakah Anda membaca hingga akhir file terpanjang, atau hanya ke ujung yang terpendek.
Sebagai contoh, read || readhanya tidak bekerja (sesuai kebutuhan pertanyaan ini), becase ketika membaca dari file pertama adalah true, file kedua ini dibaca adalah dilewati sampai file pertama sudah dibaca dari awal sampai akhir ... Kemudian, karena status masih true, loop sementara berlanjut dan membaca file kedua dari awal hingga selesai.
read && readakan membaca file secara bersamaan (sinkron) jika Anda hanya ingin membaca sejauh file terpendek. Namun, jika Anda ingin membaca kedua file eof, maka Anda harus bekerja dengan while'spersyaratan sintaks, yaitu. dengan perintah segera sebelum para do whilelingkaran menghasilkan kode kembali non-nol untuk keluar dari sementara loop.
Berikut adalah contoh cara membaca kedua file ke eof
while IFS= read -r line3 <&3 || ((eof3=1))
IFS= read -r line4 <&4 || ((eof4=1))
!((eof3 & eof4))
do
echo "$line3, $line4"
done 3<file3 4<file4
(Anda mungkin ingin menguji eof3 dan eof4 sebelum membaca, tetapi gagasan umum ada di sana, terutama dalam kondisi benar / salah akhir.
||tidak bekerja untuk saya. Ini memproses file1 kemudian file2 , tetapi itu tetap membuat file disinkronkan dengan&&, yang keluar dari loop sementara setelah bukti pertama . - GNU bash 4.1.5