我有一個bash腳本從文件中讀取行,然後用這些行做一些邏輯。Bash讀取行緩衝區溢出
所以
while read line;
do
# some stuff
done < "$1"
在while循環我一個管道命令的輸出tee
的身體。 當這個輸出非常大時,在100K的數量級上,下一次讀取線路的調用失敗,while循環在讀取文件中的所有行之前終止。
爲什麼會發生這種情況?我不是一個bash專家,但它似乎正在發生某種緩衝區溢出。如果是這樣,我該如何糾正?
感謝, -D
編輯: 所以一些澄清是爲了。 $ 1是提供給bash腳本的第一個命令行參數,它對應於文件名。我正在做的是將輸入文件的每一行作爲參數傳遞給另一個程序。我正在將該程序的標準輸出和標準輸出到| tee -a somefile
我給輸入的程序是非標準的。根據我正在閱讀的文件的行,該程序的輸出可能非常大。
所以我在做什麼更詳細的例子是
while read line;
do
setSomeVar1
setSomeVar2
program --output="$setSomeVar1" -options "$line" 2>&1 | tee -a "$setSomeVar2"
done < "$1"
感謝,
-D
什麼是'$ 1'?你到底在做什麼? – chepner 2013-02-27 17:32:26
這個工作的正確工具...... bash是不是。 – 2013-02-27 17:33:23
循環體中的其他內容也有可能從標準輸入中讀取,這意味着它正在從用於「讀取」命令的文件中抽取數據。 – chepner 2013-02-27 17:33:31