
일련의 스크립트를 실행하는 간단한 bash 루프가 있습니다.
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
php ./script.php $1
done
스크립트 에서 ed loop
를 깰 수 있습니까 ?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
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님께 감사드립니다. 변경했습니다(그가 진심으로 말한 것 같기를 바랍니다 :-) )