我有这个脚本:
#!/bin/bash
while [ true ]
do
if tail -1 /tmp/test | grep 'line3'
then
echo found
sleep 5
else
echo not found
fi
done
它每5秒查找一次line3
。如果找不到line3
,如何使脚本停止?
答案 0 :(得分:6)
使用逻辑分裂。不需要打破。
#!/bin/bash
match=1
while [ ${match} -eq 1 ]
do
if tail -1 /tmp/test | grep 'line3'
then
echo found
sleep 5
else
match=0
echo not found
fi
done
答案 1 :(得分:1)
由于while [ true ]
循环可以使用您的子句作为测试本身,因此您在tail | grep
和if, then, else
周围包含while
的原因有点不清楚:
#!/bin/bash
while tail -1 /tmp/test | grep 'line3'
do
echo found
sleep 5
done
echo "not found"
在if, then, else
中包装while [ true ]
并没有错,它只是不太理想。
答案 2 :(得分:-1)
<强>解决强>
#!/bin/bash
while [ true ]
do
if tail -1 /tmp/test | grep 'line3'
then
echo found
sleep 5
else
echo not found
break
fi
done