Shell腳本讀取最后一行丟失我有一個... bash shell腳本的奇怪問題,我希望得到一些見解。我的團隊正在編寫一個腳本,該腳本遍歷文件中的行并檢查每個行中的內容。我們有一個錯誤,當通過將不同腳本排序在一起的自動化過程運行時,最后一行沒有被看到。使用的代碼遍歷文件中的行(名稱存儲在DATAFILE被cat "$DATAFILE" | while read line我們可以從命令行運行腳本,它會看到文件中的每一行,包括最后一行,就好了。但是,當由自動化進程(運行在相關腳本之前生成DATAFILE的腳本)運行時,永遠不會看到最后一行。我們更新了代碼以使用以下代碼迭代這些行,并清除了問題:for line in `cat "$DATAFILE"`注意:DATAFILE沒有在文件末尾寫入換行符。我的問題是兩部分......為什么最后一行不會被原始代碼看到,為什么這會改變有所作為呢?我只想到我能想出為什么最后一行不會被看到:前一個寫入文件的進程依賴于進程結束以關閉文件描述符。問題腳本正在啟動并以足夠快的速度打開文件,而前一個進程已“結束”,它沒有“關閉/清理”足以讓系統自動關閉文件描述符。話雖這么說,似乎,如果你在shell腳本中有2個命令,那么第一個應該在腳本運行第二個時完全關閉。對問題的任何見解,尤其是第一個,都將非常感激。
Shell腳本讀取最后一行丟失
慕尼黑8549860
2019-11-25 20:16:13