得到结果后,我试图使直到循环停止

时间:2018-10-13 08:27:32

标签: bash shell

#!/bin/bash
cd  /root/.OceanVieW

keyword=$( cat oceanview.conf |grep "seaworld" |cut -d "=" -f2);
until [ ${#keyword} -gt 1 ] ; do sleep 30
 cat oceanview.conf |grep "seaworld" |cut -d "=" -f2 ;
 done

循环不会停止,而是继续进行。我希望得到结果后就停止。

1 个答案:

答案 0 :(得分:1)

简化(根据OP comment),直到找不到seaworld=0为止:

until grep -m 1 -vq '^seaworld=0$'  oceanview.conf ; do 
    sleep 30
done

如果需要详细的输出(一个连续的数字列表,除了最后一个测试的数字外,它们都是0),请尝试:

until grep -m 1  -v '^seaworld=0$'  oceanview.conf ; do 
    sleep 30
done | cut -d "=" -f2

如果太冗长,则在-f2后附加| uniq -c,以显示0个计数,最后一个数字打印在循环完成。