Bash脚本-如何使它显示状态每3秒



我有一个bash脚本,我想让它每3秒检查一次日志中的短语,当它完成时-显示成功消息

我试过这样做,但是我没有看到状态每3秒更新一次:

until tail -f /path/server.log | grep -i 'Server has started succesfully'
do
echo Waiting ... '$date'
sleep 3
done
echo You are ready '$date'
done

你能给我解释一下是什么问题吗?

until循环等待grep完成。

你可能想要更像

while true; do
sleep 3
echo "Waiting ... $(date)"
done &
pid=$!

tail -f test.log | grep -iq --line-buffered 'Server has started succesfully'
kill "$pid"

还注意为grep添加了-q选项,以避免将其输出溢出到控制终端,以及用于打印日期的固定语法。(单引号防止展开,所以使用双引号;$date不是一个定义的变量,所以我猜你的意思是调用date命令。)如果日志文件增长缓慢,--line-buffered选项到grep可能是必要的。

演示:https://ideone.com/VK9dW0

tail -f test|while read; do
(echo $REPLY|grep -i 'Server has started succesfully') && break
done

但是你需要一些额外的超时条件

最新更新