Ich möchte eine ausführbare Datei herunterladen und sie in einem Schritt ausführen und dabei der ausführbaren Datei Argumente bereitstellen.
Ich habe es geschafft, das Herunterladen und Ausführen mithilfe einer Pipe durchzuführen:
wget -O - http://xrl.us/cpanm | perl
Dadurch wird die cpanm
ausführbare Datei über ausgeführt perl
.
Jetzt möchte ich ein Argument hinzufügen, sagen wir A
:
wget -O - http://xrl.us/cpanm | perl A
Das funktioniert nicht mehr. Ich bekomme jetzt Cannot write to ‘-’ (Success).
.
Wie kann das erreicht werden?
Antwort1
Du kannst GebenperlSkriptargumente, nach programname
denen in diesem Fall die Standardeingabe ( -
) folgt. Ich denke also, das ist, was Sie fragen:
wget -O - http://xrl.us/cpanm | perl -- - A
oder
wget -O - http://xrl.us/cpanm | perl -- - --help
Sehen:perlrun-Manpagefür mehr Details.
Notiz:Aus der Handbuchseite:
Ein "--" signalisiert das Ende der Optionen und deaktiviert die weitere Verarbeitung von Optionen. Alle Argumente nach dem "--" werden als Dateinamen und Argumente behandelt.
Mit anderen Worten, --
beendet dieperlArgumente. Danach geben wir den Dateinamen ein, der das Skript enthält (in unserem Fall ist das die Standardeingabe, die durch ein gekennzeichnet ist -
) und dann die Argumente für das Skript.