
Tengo un bucle bash simple que ejecuta una serie de scripts como
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
php ./script.php $1
done
¿Es posible separar el loop
guión output
echo
del php
guión?
Respuesta1
¿Quizás te refieres a algo como esto?
#!/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
Inspirado porLa respuesta de @Archemar, también se podría decir
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
! php ./script.php "$1" | grep -v 'foo' || break
done
Respuesta2
si script.php puede devolver algo diferente a 0.
...
do
if ! php ./script.php $1
then break
fi
done
- No estoy seguro de que lo necesites
./
delante de script.php Tampoco estoy seguro de la sintaxis de tu bucle.Aprendo algo sobre bash.
para filtrar por "salida"
if php script.php $1 | grep --quiet output
then break
fi
De esta manera, esto es grep
lo que da if
el código de retorno.
Respuesta3
Podrías intentarlo así:
output=$(php script.php "$1")
if [ $output = "{End output}" ]
then
break
fi
Ahora sólo tienes que cambiar tu script PHP de esta manera:
...
echo '{End output}';
...
Actualizar:
Gracias a tripleee por los consejos. Lo cambié (espero que fuera en serio :-))