![如何通过内部脚本的输出来中断 bash 循环?](https://linux22.com/image/110545/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%86%85%E9%83%A8%E8%84%9A%E6%9C%AC%E7%9A%84%E8%BE%93%E5%87%BA%E6%9D%A5%E4%B8%AD%E6%96%AD%20bash%20%E5%BE%AA%E7%8E%AF%EF%BC%9F.png)
我有一个简单的 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 的建议。我改变了它(我希望他是认真的:-))