シェル用に各stdout-lineを処理したいときは、それを作成します。私は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を取得してそれを殺すことができますが、それは私にとっては非常に醜いようです。
ヒント
最初の解決策が明らかにうまくいきましたので、今は本当に馬鹿げています。私はシェルスクリプトには比較的新しいので、あなたが言及した最初の解決策がブロックされていないことを認識していませんでした。ありがとう! – RobAu