Thread quoten (Shell Aufruf) (13 answers)
Opened by wenze at 2018-08-20 13:29

Linuxer
 2018-08-20 14:37
#188804 #188804
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
Wenn man das Quoting manuell macht, wird in aller Regel der \ verwendet, nicht /.

Gerade bei Deinem zweiten Beispiel drängt sich der Gedanke auf, dass da die Zeichen verwechselt wurden:
Code: (dl )
su - $sidadm -c /" cat /dev/null > /var/spool/mail/$sidadm/"


Sollte vielleicht eher

Code: (dl )
su - $sidadm -c \" cat /dev/null > /var/spool/mail/$sidadm\"


heißen?

Wenn Du den richtigen Operator verwendest, kannst Du Dir sogar einiges an Quoting sparen.

Eine Variante wäre der von GwenDragon bereits aufgezeigte qx// Operator.
Wenn Du beim system() bleiben willst, kämen auch noch q() oder qq() in Frage.
Erklärung zu beiden gibt es ebenfalls unter http://perldoc.perl.org/perlop.html#Quote-Like-Ope...

Damit könnte man dann schreiben:

Code (perl): (dl )
1
2
my $command = qq( su - $sidadm -c "cat /dev/null > /var/spool/mail/$sidadm" );
system( $command ) == 0 or die "Failed <$command>: $!";


edit: minor fixes
Last edited: 2018-08-20 14:42:02 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread quoten (Shell Aufruf)