
У меня есть простой цикл bash, запускающий ряд скриптов, как
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
php ./script.php $1
done
Можно ли вырвать 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's ответ, можно также сказать
#!/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 за советы. Я изменил его (надеюсь, так, как он имел в виду :-) )