Bash-Script: Quotes in Kommando

geistgesicht

Mitglied
Hallo,

ich möchte aus einem Bash-Script ein Kommando ausführen, welches Anführungszeichen enthält:
command="./myexec -P \"integer16, 0\" fileA.xy fileB.xy"


Wenn ich dieses Kommando mit:
echo -e "Command: $command"
ausgebe, wird es korrekt ausgegeben, aber wenn ich es mit:
$command
ausführen will, erhalte ich eine Fehrlermeldung. Wichtig ist, dass Program myexec folgendermassen ausgeführt werden muss:
./myexec -P "integer16, 0" fileA.xy fileB.xy

Sehr dankbar für jede Hilfe..
 
Hallo,

warum willst du eigentlich das ganze Programm in einer Variablen speichern?

warum machst du es denn nicht so?

Code:
params="-P \"integer16, 0\" fileA.xy fileB.xy"
./myexec $params

Ich kann es leider gerade nicht ausprobieren, aber so müsste es funktionieren.

MFG

zEriX
 
Hallo,

genau das gleiche Problem. Ich habe auch vergessen, dass
Code:
fileA.xy
in einer Variablen
Code:
$inFile
steht. Das heisst, der Aufruf also so aussieht:

Code:
command="./myexec -P \"integer16, 0\" $inFile fileB.xy"
 
Hi.
warum machst du es denn nicht so?

Code:
params="-P \"integer16, 0\" fileA.xy fileB.xy"
./myexec $params
Das ist dasselbe in grün. Das Problem dabei ist, dass durch Parameter Expansion nicht mehr Wörter enstehen können. Die Worte werden (da das Quote Removal bereits vor Parameter Expansion vollzogen wird) nur durch das Word Splitting an den definierten Wortgrenzen gesplittet. Das was dann ausgeführt wird (in beiden Fällen) ist folgendes:
Code:
./myexec -P '"integer16,' '0"' fileA.xy fileB.xy

Versuch's mal so:
Bash:
eval $cmd
Gruß
 
Zurück