Ankündigung

Einklappen
Keine Ankündigung bisher.

Argumente in der Kommandozeile

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Argumente in der Kommandozeile

    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:
    PHP-Code:
    $options getopt('kt', array('kuchen''torte'));

    echo 
    "kuchen: ".isset($options['k']);
    echo 
    "\n\n";
    echo 
    "torte: ".isset($options['t']); 
    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?

  • #2
    getopt kann schon einen gewissen Komfort bieten, wenn man sich an die geforderten Konventionen hält:
    options
    Each character in this string will be used as option characters and matched against options passed to the script starting with a single hyphen (-). For example, an option string "x" recognizes an option -x. Only a-z, A-Z and 0-9 are allowed.
    longopts
    An array of options. Each element in this array will be used as option strings and matched against options passed to the script starting with two hyphens (--). For example, an longopts element "opt" recognizes an option --opt.
    Für so etwas
    Also beim Aufruf "skript.php -a -b -c -irgendwas blau rot gelb",
    würde ich auf argv zurückgreifen.

    Aber warum so viele Worte? Mit var_dump($argv) in einen einen kleinen Script kann dies in kurzer Zeit getestet werden.

    LG jspit

    Kommentar

    Lädt...
    X