一連のスクリプトを実行する単純な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
script.phpがゼロ以外のものを返すことができる場合。
...
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に感謝します。変えました(彼が真剣だったらいいですね:-))