
我有一個簡單的 bash 循環,運行一系列腳本
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
php ./script.php $1
done
是否可以從腳本中打破loop
ed ?output
echo
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 的建議。我改變了它(我希望他是認真的:-))