Shell komut dosyalarımdan birinde bir sorunum var. Birkaç meslektaşına sordum, ancak hepsi sadece başlarını salladı (bir miktar tırmalamadan sonra), bu yüzden buraya bir cevap için geldim.
Anladığım kadarıyla aşağıdaki kabuk betiği son satır olarak "Sayı 5" dir. Dışında değil. "Sayı 0" yazıyor. Eğer "okunurken" başka bir döngü ile değiştirildiyse, iyi çalışır. İşte senaryo:
echo "1"> input.data echo "2" >> input.data echo "3" >> input.data echo "4" >> input.data echo "5" >> input.data CNT = 0 cat input.data | okurken; yap CNT ++ 'a izin verin; echo "$ CNT'ye sayıyor" tamam yankı "Sayı $ CNT"
Bu neden oluyor ve nasıl önleyebilirim? Bunu Debian Lenny ve Squeeze'de denedim, aynı sonuç (örn. Bash 3.2.39 ve bash 4.1.5. Bir kabuk betiği sihirbazı olmadığına tamamen itiraf ediyorum, bu yüzden herhangi bir işaretçi takdir edilebilir).