
Ich habe eine einfache Bash-Schleife, die eine Reihe von Skripten ausführt als
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
php ./script.php $1
done
loop
Ist es möglich, das durch das output
echo
ED aus dem Skript zu unterbrechen php
?
Antwort1
Vielleicht meinen Sie so etwas?
#!/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
Inspiriert von@Archemars Antwortkönnte man auch sagen
#!/bin/bash
for (( c=0; c<=200; c++ ))
do
! php ./script.php "$1" | grep -v 'foo' || break
done
Antwort2
wenn script.php etwas anderes als 0 zurückgeben kann.
...
do
if ! php ./script.php $1
then break
fi
done
- Ich bin nicht sicher, ob Sie es
./
vor script.php brauchen. Ich bin mir auch Ihrer Schleifensyntax nicht sicher.Ich habe etwas über Bash gelernt.
zum Filtern nach "Ausgabe"
if php script.php $1 | grep --quiet output
then break
fi
Auf diese Weise wird der Rückgabecode grep
zurückgegeben .if
Antwort3
Du könntest es folgendermaßen versuchen:
output=$(php script.php "$1")
if [ $output = "{End output}" ]
then
break
fi
Nun müssen Sie Ihr PHP-Skript nur noch folgendermaßen ändern:
...
echo '{End output}';
...
Aktualisieren:
Danke an tripleee für die Ratschläge. Ich habe es geändert (ich hoffe, er meinte es so :-) )