Saya memiliki bagian kecil kode yang membaca file, $ FUNCTION_FILE yang berisi daftar nama fungsi dalam format:
func1
func2
func3
Ini akan membaca baris, menjalankan fungsinya, dan ulangi sampai file selesai. Berikut ini cuplikannya:
while read line; do
LINE_NUMBER=`expr $LINE_NUMBER + 1`
echo "LINE_NUMBER=$LINE_NUMBER"
$func
done <$FUNCTION_FILE
Saya mengalami situasi di mana kadang-kadang bagian kode ini akan berhenti membaca "$ FUNCTION_FILE" sebelum menyelesaikan dan melanjutkan dengan sisa skrip. Kadang-kadang itu hanya akan membaca baris pertama dan melewatkan sisanya, kadang-kadang hanya baris kedua; Saya tidak pernah melihat pesan "LINE_NUMBER = $ LINE_NUMBER" untuk baris berikutnya juga.
Dengan asumsi file tersebut benar, apa saja hal-hal yang dapat menyebabkan masalah ini yang saya lihat?
exit
?$func
. Tolong tunjukkan kepada kami fungsi yang sebenarnya Anda jalankan, tidak ada cara kami dapat membantu sebaliknya.Jawaban:
Apakah ada fungsi Anda yang membaca dari stdin (mis:
read
perintah)? Jika demikian, itu akan menghirup sisa FUNCTION_FILE.Ubah loop sementara untuk menggunakan deskriptor file yang berbeda:
Keluar dari kebiasaan menggunakan ALL_CAPS_VARIABLES - suatu hari nanti Anda akan secara tidak sengaja menggunakan "PATH" dan menghancurkan skrip Anda.
sumber