如何停止,而在外壳做一次字符串没有找到?(how to stop while do in shell

2019-10-21 12:33发布

我有这样的脚本:

#!/bin/bash
while [ true ]
do

    if tail -1 /tmp/test | grep 'line3'
    then
        echo found
        sleep 5
    else
        echo not found
    fi
done

它看起来对line3每5秒。 如何使脚本停止一旦line3是不是发现了什么?

Answer 1:

这是一个有点不清楚为什么要包括while [ true ]在你的tail | grep tail | grepif, then, elsewhile循环可以使用您的条款作为测试本身:

#!/bin/bash

while tail -1 /tmp/test | grep 'line3'
do
    echo found
    sleep 5
done

echo "not found"

没有什么错与包装if, then, elsewhile [ true ] ,它仅仅是不是最佳少。



Answer 2:

使用逻辑断裂。 没有必要打破。

#!/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


Answer 3:

解决了

    #!/bin/bash
while [ true ]
do

    if tail -1 /tmp/test | grep 'line3'
    then
        echo found
        sleep 5
    else
        echo not found
        break
    fi
done


文章来源: how to stop while do in shell once a string is not found?
标签: bash shell