Thread Quoting + escaping + bash
(8 answers)
Opened by qwe123qwe at 2014-02-26 21:02
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 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ß ? |