![내부 스크립트의 출력으로 bash 루프를 끊는 방법은 무엇입니까?](https://linux55.com/image/110545/%EB%82%B4%EB%B6%80%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EC%B6%9C%EB%A0%A5%EC%9C%BC%EB%A1%9C%20bash%20%EB%A3%A8%ED%94%84%EB%A5%BC%20%EB%81%8A%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.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
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에게 감사드립니다. 바꿨어요(그가 진지했으면 좋겠어요 :-))