1. 程式人生 > >while read line無法讀取最後一行的問題

while read line無法讀取最後一行的問題

while read line讀取檔案時,如果檔案最後一行之後沒有換行符\n,則read讀取最後一行時遇到檔案結束符EOF,迴圈終止,雖然此時$line記憶體有最後一行,但程式已經沒有機會再處理此行,因此可以通過以下程式碼來解決此問題:

while read line ||[[-n ${line}]];do...done

這樣當檔案沒有結束時不會測試-n $line,當遇到檔案結束時,仍然可以通過測試$line是否有內容來進行繼續處理。