Linux 高级while控制语句

Linux 高级while控制语句,linux,scripting,Linux,Scripting,我正在开发一个posix脚本(Linux),它获取一个网页,将内容存储在一个变量中,并查找字符串“SUCCESS”。如果找到字符串,则不应执行循环的内容;如果未找到字符串,则应反复执行循环,直到找到为止。我试图让所有的curl和grep都发生在while循环的控制语句中,但我不确定这是否可行,到目前为止没有成功: while [ -z "site_status=`curl http://www.example.com/index.html | grep -o 'SUCCESS'`" ];

我正在开发一个posix脚本(Linux),它获取一个网页,将内容存储在一个变量中,并查找字符串“SUCCESS”。如果找到字符串,则不应执行循环的内容;如果未找到字符串,则应反复执行循环,直到找到为止。我试图让所有的curl和grep都发生在while循环的控制语句中,但我不确定这是否可行,到目前为止没有成功:

while [ -z "site_status=`curl http://www.example.com/index.html | grep -o 'SUCCESS'`"     ];
do
if [ `echo "$site_status" | grep -o 'WAIT'` ]; then
    sleep 10s
elif [ `echo "$site_status" | grep -o 'RETRY'` ]; then
    sleep 10s
else
    exit 1
done
我希望脚本尽可能干净,因此我尽量避免创建将网页内容保存在全局变量中的函数,并在while循环中使用此变量


关于如何使上述while循环工作,有什么建议吗?或者是更好的清洁解决方案?

这一个似乎可以满足您对我的所有要求:

until { t=`curl http://www.example.com 2> /dev/null` && echo $t | grep -q SUCCESS; };
    do (echo $t | grep -q "\(WAIT\|RETRY\)" && sleep 10) || exit 1
done

这个似乎满足了你对我的所有要求:

until { t=`curl http://www.example.com 2> /dev/null` && echo $t | grep -q SUCCESS; };
    do (echo $t | grep -q "\(WAIT\|RETRY\)" && sleep 10) || exit 1
done