我讀某些模式,如播放,暫停,停止等日誌文件..有條件終止推遲腳本
我只想執行某個腳本時,我讀到後面沒有一個STOP在接下來的5秒內播放。
這裏是我的代碼:
#!/bin/bash
tail -Fn0 /tmp/player.log | \
while read line ; do
echo "$line" | grep -q "PLAYER STATE CHANGE: "
if [ $? = 0 ]
then
# If playing
echo "$line" | grep -q "PLAY"
if [ $? = 0 ]
then
echo "Started PLAYING!"
kill -INT $pid
fi
# If paused
echo "$line" | grep -q "PAUSE"
if [ $? = 0 ]
then
echo "PAUSED!"
defer_switch_off.sh &
pid=$!
fi
# If stopped
echo "$line" | grep -q "STOP"
if [ $? = 0 ]
then
echo "STOPPED!"
defer_switch_off.sh &
pid=$!
fi
fi
done
這是我的defer_switch_off.sh
#!/bin/bash
trap 'kill -INT $pid' INT
timeout 10 sh -c 'sleep 5; switch_off.sh' &
pid=$!
wait $pid
我遇到的問題是,我不能夠kill
的deferred_switch_off.sh
腳本時PLAY
遵循STOP
在我想要的5秒鐘的時間範圍內。腳本仍然執行。
與你的問題沒有關係,但你可以用'=〜'字符串匹配bash運算符來簡化你的測試:if [[「$ line」=〜「PLAY」]]; then'。 –
謝謝@RenaudPacalet。我不知道,會試一試。 – Zaxter
我知道這不是你的問題,但是你應該把它作爲一個狀態機來實現,它有一個與時間檢查相關的特殊狀態(例如STOP_WAIT)。 –