while
interesitng sözdizimine sahiptir. Döngüden önce birden fazla komut koyabilirsiniz do ... while
ve söz konusu durumun, aşağıdaki özel gereksinimlerinize bağlı olarak bu özelliği dengelemesi gerekebilir: en uzun dosyanın sonuna veya yalnızca en kısa dosyanın sonuna mı okuyorsunuz?
Örneğin, read || read
sadece değil çalışır birinci dosyanın salt olduğunda becase, (Sorunun hükümlerine uygun olarak) true
, ikinci dosyanın okuma edilir atlanır ilk dosya baştan sona okuma kadar Sonra ... statüsüne çünkü ise true
, while döngüsü devam eder ve ikinci dosyayı baştan sona okur.
read && read
yalnızca en kısa dosyaya kadar okumak istiyorsanız, dosyaları eşzamanlı olarak (eşzamanlı olarak) okuyacaktır. Ancak, her iki dosyayı da okumak istiyorsanız eof
, while's
sözdizimi gereksinimleriyle çalışmanız gerekir . komutu ile hemen öncedo while
, sıfır olmayan bir dönüş kodu üreten döngüsü sırasında döngünün patlak.
İşte her iki dosya nasıl okunacağı bir örnektir 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
(okumadan önce eof3 ve eof4'ü test etmek isteyebilirsiniz, ancak genel fikir, özellikle son doğru / yanlış durumda.
||
benim için çalışmıyor. Bu süreç dosya1 sonra dosya2 , ancak senkronize dosyaları tutmak yapar&&
çıkar, süre ilk sırasında döngü eof . - GNU bash 4.1.5