Hey.
Ich möchte zum ersten Mal ein PHP-Skript schreiben, welches für die Kommandozeile ausgelegt sein soll.
Leider stehe ich ein wenig auf dem Schlauch, was das Übergeben der Variablen/Parameter/Argumente angeht.
In die Grundlagen von $argv und getopt() habe ich mich schon eingelesen, aber es bleiben einige offene Fragen:
1. Welches ist der korrekte Weg, um zu prüfen, ob ein Parameter übermittelt wurde?
So funktioniert es:
Aber ist dies die "sauberste" Lösung? Oder geht es auch leichter/besser?
2. Wie filtere ich aus $argv alles heraus, so dass nur noch die Parameter ohne "-" übrig bleiben (wie nennt man das eigentlich?)?
Also beim Aufruf "skript.php -a -b -c -irgendwas blau rot gelb", möchte ich nur "blau, rot, gelb" herausbekommen.
Auch hier fallen mir natürlich Wege ein, z.B. per foreach durchgehen und alles was "-" enthält, löschen.
Aber es muss doch einen geeigneteren Weg geben, oder?
3. Gibt es neben getopt() und $argv/$argc noch weitere Dinge, die für den Kommandozeilen-Aufruf beachtenswert sind?
Es wäre toll, wenn mir da jemand weiterhelfen könnte.
Danke im Voraus,
MeckMeck
EDIT:
Mir ist da gerade noch eine Frage in den Sinn gekommen:
Es gibt ja STDIN und STDOUT.
Mal angenommen, skript1.php gibt sowas wie "argument1 argument2" zurück (als plain text).
Ist es möglich die Rückgabe von skript1.php direkt an skript2.php via STDIN als Argumente zu übergeben?
Ich möchte zum ersten Mal ein PHP-Skript schreiben, welches für die Kommandozeile ausgelegt sein soll.
Leider stehe ich ein wenig auf dem Schlauch, was das Übergeben der Variablen/Parameter/Argumente angeht.
In die Grundlagen von $argv und getopt() habe ich mich schon eingelesen, aber es bleiben einige offene Fragen:
1. Welches ist der korrekte Weg, um zu prüfen, ob ein Parameter übermittelt wurde?
So funktioniert es:
PHP-Code:
$options = getopt('kt', array('kuchen', 'torte'));
echo "kuchen: ".isset($options['k']);
echo "\n\n";
echo "torte: ".isset($options['t']);
2. Wie filtere ich aus $argv alles heraus, so dass nur noch die Parameter ohne "-" übrig bleiben (wie nennt man das eigentlich?)?
Also beim Aufruf "skript.php -a -b -c -irgendwas blau rot gelb", möchte ich nur "blau, rot, gelb" herausbekommen.
Auch hier fallen mir natürlich Wege ein, z.B. per foreach durchgehen und alles was "-" enthält, löschen.
Aber es muss doch einen geeigneteren Weg geben, oder?
3. Gibt es neben getopt() und $argv/$argc noch weitere Dinge, die für den Kommandozeilen-Aufruf beachtenswert sind?
Es wäre toll, wenn mir da jemand weiterhelfen könnte.
Danke im Voraus,
MeckMeck
EDIT:
Mir ist da gerade noch eine Frage in den Sinn gekommen:
Es gibt ja STDIN und STDOUT.
Mal angenommen, skript1.php gibt sowas wie "argument1 argument2" zurück (als plain text).
Ist es möglich die Rückgabe von skript1.php direkt an skript2.php via STDIN als Argumente zu übergeben?

Kommentar