Thread Quoting + escaping + bash (8 answers)
Opened by qwe123qwe at 2014-02-26 21:02

qwe123qwe
 2014-02-26 21:02
#173738 #173738
User since
2013-10-08
65 Artikel
BenutzerIn
[default_avatar]
Hi all, ich bitte (mal wieder) um Tipps, diesmal für folgendes Problem :

Mit dem Code
Code (perl): (dl )
1
2
3
4
5
my @grafikoptionen = ($varoptionen[0], $varoptionen[1], $fixd, $varoptionen[2], $varoptionen[3], $fixm, $fixs);
print "Grafikoptionen: @grafikoptionen\n\n" if $debug;
my @sys_cmd = ("./graphic", "@grafikoptionen", "$refeingaben->{id}", ">$bild.png");
print STDERR "\n@sys_cmd\nwird gestartet\n" if $debug;
system( "@sys_cmd" ) == 0 or die "$prog_name: Fehler: system( \"@sys_cmd\" ) gescheitert mit Rückgabewert $?\n";

rufe ich per Systemcall das Programm ./graphic mit einer Liste von Grafikoptionen auf, die ich in der ersten Zeile aus vorher definierten Variablen zusammenbaue und lasse mir dann eine Grafikdatei erstellen.
Das funktioniert auch soweit.

Allerdings NUR, wenn in den Grafikoptionen keine Klammern vorkommen. Die benötige ich aber.
In einem solchen Fall bekomme ich die Fehlermeldung
Quote
sh: 1: Syntax error: "(" unexpected

und dann "system .... gescheitert mit Rückgabewert 512".
Inzwischen weiß ich, daß das eine Fehlermeldung der Bash (nicht von Perl) ist, die daher kommt, daß die Klammern () bei mir in den Grafikoptionen nicht escaped werden.

Die Frage ist jetzt, ob ich jetzt in Perl die Liste @grafikoptionen so expandieren kann, daß die Klammern automatisch escaped werden. Ich hab da mit qq( ) und ähnlichem herumprobiert, bin aber nicht auf eine Lösung gekommen. Gibt's da eine Lösung, bei der ich NICHT direkt in der Definitionsfunktion für die @varoptionen rumfummeln muß ?

View full thread Quoting + escaping + bash