Wie kann ich die echo-Zeichenfolge mit bash-Befehl mehr in Perl?
Dies ist, was ich versucht habe:
my $s = "s" x 1000;
my $r = `echo $s |more`;
Aber es funktioniert nicht, mein Programm beendet sich direkt...
InformationsquelleAutor lexer | 2011-09-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es funktioniert nicht in deinem Beispiel, weil du nie drucken
$r
. Die Ausgabe ist erfasst in der variable$r
. Durch die Verwendungsystem()
statt, Sie können finden Sie in der gedruckten Ausgabe auf STDOUT aus, aber dann können Sie die Ausgabe wie du (wahrscheinlich) erwartet.Nur:
Update: ich wechselte
say
zuprint
, da "echo" bereits ein Zeilenumbruch.Flucht shell-meta-Zeichen, wie bereits erwähnt in den Kommentaren, die Sie verwenden können, quotemeta.
Sollten Sie sich auch bewusst sein, dass
| more
hat keine Wirkung, wenn die Erfassung Ausgabe der shell in eine variable. Der Prozess ist einfach:echo | more | $r
, und Sie könnte genauso gut überspringenmore
.Sie können quotemeta. Oder Sie können escape-Zeichen selbst, wenn Sie wissen, was Sie suchen.
InformationsquelleAutor TLP
versuchen mit der system() Befehl :
zeigt alle Ihre 's', und in
$r
Sie das Ergebnis (in diesem Fall 0) des Befehls.$s
Sonderzeichen enthält ? Gibt es eine Funktion, das zu tun shell_escape gleichermaßen Zeug?lexer, stackoverflow.com/q/3212128#3212171
was ist der Unterschied von
quotemeta
?quotemeta ist das falsche Werkzeug, weil es für die Angebotserstellung regexp-Sonderzeichen, keine shell-Sonderzeichen.
InformationsquelleAutor Cédric Julien