0
我想處理每個標準輸出行的外殼,它創建的那一刻。我想抓取test.sh
的輸出(一個漫長的過程)。我目前的做法是這樣的:殺死管道進程的好方法?
./test.sh >tmp.txt &
PID=$!
tail -f tmp.txt | while read line; do
echo $line
ps ${PID} > /dev/null
if [ $? -ne 0 ]; then
echo "exiting.."
fi
done;
但不幸的是,這將打印「退出」,然後等待,因爲尾-f仍在運行。我試過break
和exit
我在FreeBSD上運行它,所以我不能使用某些linux尾部的--pid=
選項。
我可以使用ps
和grep
讓尾部的PID和殺死它,但是那似乎很醜陋的我。
任何提示?
我現在感覺非常愚蠢的,作爲第一個解決方案顯然作品。我相對較新的shell腳本,並沒有意識到你提到的第一個解決方案不會阻止..謝謝! – RobAu 2012-02-22 16:59:33