一旦找不到字符串,如何在shell中停止?

时间:2015-01-02 08:05:16

标签: bash shell

我有这个脚本:

#!/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,如何使脚本停止?

3 个答案:

答案 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 | grepif, 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