我有一个有趣的情况,我试图编写脚本。我有一个程序,它成功启动10秒后输出26,000行。否则我必须杀了它并重新开始。我尝试过这样的事情:
test $(./long_program | wc -l) -eq 26000 && echo "Started successfully"
但只有在程序完成运行时才有效。是否有一种聪明的方法来观察命令的输出流并做出相应的决策?我不知所措,甚至不确定如何开始寻找这个。谢谢!
答案 0 :(得分:4)
怎么样?
./long_program > mylogfile &
pid=$!
sleep 10
# then test on mylogfile length and kill $pid if needed
答案 1 :(得分:0)
count=0
until [ $count -eq 26000 ]; do
killall ./longrun
#start in background
./longrun >output.$$ &
sleep 10
count=$(wc -l output.$$ |awk '{print $1}')
done
echo "done"
#disown so it continues after current login quits
disown -h