我有一个简单的 bash 循环,运行一系列脚本
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
php ./script.php $1
done
是否可以loop
通过脚本output
echo
中的 ed来打破php
?
答案1
也许你的意思是这样的?
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
output=$(php ./script.php "$1")
case $output in
*'foo'*) echo "Loop terminated"; break;;
esac
echo "$output"
done
灵感来自@Archemar 的回答,你也可以说
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
! php ./script.php "$1" | grep -v 'foo' || break
done
答案2
if script.php 可以返回不同于 0 的内容。
...
do
if ! php ./script.php $1
then break
fi
done
- 我不确定你需要
./
在 script.php 前面 我也不确定你的循环语法我学到了一些关于 bash 的知识
过滤“输出”
if php script.php $1 | grep --quiet output
then break
fi
这样,这就是grep
返回if
代码。
答案3
你可以这样尝试:
output=$(php script.php "$1")
if [ $output = "{End output}" ]
then
break
fi
现在您只需按以下方式更改 PHP 脚本:
...
echo '{End output}';
...
更新:
感谢 Tripleee 的建议。我改变了它(我希望他是认真的:-))