Saya memiliki masalah di salah satu skrip shell saya. Tanya beberapa rekan, tetapi mereka semua hanya menggelengkan kepala (setelah beberapa goresan), jadi saya datang ke sini untuk jawaban.
Menurut pemahaman saya, skrip shell berikut harus mencetak "Count is 5" sebagai baris terakhir. Kecuali tidak. Mencetak "Hitung 0". Jika "while read" diganti dengan jenis loop lain, itu berfungsi dengan baik. Ini skripnya:
gema "1"> input.data gema "2" >> input.data gema "3" >> input.data gema "4" >> input.data gema "5" >> input.data CNT = 0 cat input.data | saat membaca; melakukan biarkan CNT ++; echo "Menghitung $ CNT" selesai gema "Hitung adalah $ CNT"
Mengapa ini terjadi dan bagaimana saya bisa mencegahnya? Saya sudah mencoba ini di Debian Lenny dan Squeeze, hasil yang sama (yaitu bash 3.2.39 dan bash 4.1.5. Saya sepenuhnya mengaku tidak menjadi penyihir skrip shell, jadi petunjuk apa pun akan dihargai.