Ich habe versucht, alle folgenden ohne Glück:Wie mache ich "cat f1 f2>! F3" mit "system"?
system "cat f1 f2 >! f3";
system 'cat f1 f2 >! f3';
system "cat f1 f2 \>\! f3";
`cat f1 f2 >! f3`;
Wie das ich tun?
Ich habe versucht, alle folgenden ohne Glück:Wie mache ich "cat f1 f2>! F3" mit "system"?
system "cat f1 f2 >! f3";
system 'cat f1 f2 >! f3';
system "cat f1 f2 \>\! f3";
`cat f1 f2 >! f3`;
Wie das ich tun?
Das scheint ein csh
Befehl zu sein, so dass Sie csh
verwenden müssen.
system('/bin/csh', '-c', 'cat f1 f2 >! f3');
Das heißt, csh
ist eine ziemlich schlechte Shell. Sie sollten in Erwägung ziehen, auf die Bourne-Shell umzuschalten (insbesondere für Skripts).
system('cat f1 f2 > f3');
Genau das suche ich: system ('/ bin/csh', '-c', 'cat f1 f2>! f3'); – silverysword
Ja, aber ich denke nicht, dass du das verwenden solltest. – ikegami
Der Umleitungsoperator >!
ist kein Standard. Es existiert möglicherweise nicht in der /bin/sh
, die Perl verwendet, um Ihre Befehle auszuführen. >|
ist weiter verbreitet. Und da der Zweck von >!
oder >|
ist, die Einstellung noclobber zu überschreiben, sollten Sie sie überhaupt nicht verwenden müssen. Vielleicht möchten Sie noclobber in Ihrer interaktiven Shell verwenden, aber in Skripten sollte es nicht aktiviert sein und >
sollte genauso funktionieren wie >|
.
In jedem Fall ist die Verwendung von system
nicht der effizienteste Weg, grundlegende Dateimanipulationsaufgaben von Perl aus durchzuführen.
Da>:
Die oben kann auf folgende Werte verkürzt werden! ist ein Shell-Befehl, warum nicht die Kopie in Perl? – user1937198
Was soll das tun? – melpomene
@ user1937198: Was erwarten Sie als Parameter zu 'system', wenn nicht ein Shell-Befehl? – Borodin