Parameter für Programmaufruf in Script dynamisch erstellen

30/06/2008 - 09:52 von Hermann Huber | Report spam
Hallo Gruppe!

In einem Script möchte ich die Parameter für einen dortigen
Programmaufruf anhand der übergebenen Argumente dynamisch erstellen.

Dem Script kann eine beliebige Anzahl an Parametern übergeben werden.
Aus diesen Parametern sollen die Parameter für den weiteren Aufruf
erstellt werden.

Meine gewünschte Logik wàre so, dass aus dem Aufruf

script.sh arg1 arg2 arg3

innerhalb des Script der Aufruf

program -o arg1 -o arg2 -o arg3 entsteht.

(Im Grunde soll also jedem Parameter ein -o vorangestellt werden)


Derzeit habe ich mein Problem so gelöst, dass ich in einer Schleife alle
Parameter durchlaufe und aus den Parametern arg1 arg2 arg3 eine Variable
preparedargs zusammensetze, in der am Ende des Durchlaufs der String "-o
arg1 -o arg2 -o arg3" steht.

Am Schluss rufe ich dann das Programm mit dem Kommando

program $preparedargs

auf.

Leider aber werden dem Programm so nicht die 6 Parameter übergeben,
sondern nur einer, der den gesamten String enthàlt.

Als ob ich das Programm mit dem Kommando

program "-o arg1 -o arg2 -o arg3"

aufrufen würde.

Gibt es für mein Problem irgend eine Lösung?


Gruß
Hermann
 

Lesen sie die antworten

#1 Heike C. Zimmerer
30/06/2008 - 11:28 | Warnen spam
Hermann Huber writes:

Derzeit habe ich mein Problem so gelöst, dass ich in einer Schleife
alle Parameter durchlaufe und aus den Parametern arg1 arg2 arg3 eine
Variable preparedargs zusammensetze, in der am Ende des Durchlaufs der
String "-o
arg1 -o arg2 -o arg3" steht.

Am Schluss rufe ich dann das Programm mit dem Kommando

program $preparedargs

auf.

Leider aber werden dem Programm so nicht die 6 Parameter übergeben,
sondern nur einer, der den gesamten String enthàlt.



Wenn $preparedargs wie im Aufruf oben ohne Quotes dasteht und den
genannten Inhalt hat, werden (sofern Du sonst nichts an der
Shell-Umgebung geàndert hast) 6 Argumente übergeben (field splitting).

Der Fehler muss woanders liegen. Beispielsweise könnte $IFS nicht den
Standardwert haben (der Leerzeichen einschließt). Eine Variante wàre,
dass eines der Argumente Leerzeichen enthàlt. Dann würde aber nicht 1
Argument übergeben, sondern mehr als 6.

Ähnliche fragen