Parameter ersetzen

11/02/2008 - 15:40 von Hannes Günther | Report spam
Hallo zusammen

Ein bessere Betreff ist mir leider nicht eingefallen.

Ich stelle das Problem mal vereinfacht dar.
Es geht mir darum irgendeinen Befehl für meherer "Objekte" auszuführen
und dabei nur einen Platzhalter mitzugeben, an den dann die variablen
Objekte gesetzt werden.

Hier mal Beispielaufrufe:


aufruf:

./befehl.sh "nslookup PLATZHALTER"
./befehl.sh "scp /tmp/datei.txt user@PLATZHALTER:/tmp/"



befehl.sh:

#!/usr/bin/ksh
for PLATZHALTER in `cat server.txt`
do
...
done;

Hoffe es ist verstàndlich was ich meine.
In diesem Fall soll für jeden Server in server.txt der Befehl
ausgeführt werden, in dem der Servername an den PLATZHALTER
geschrieben wird.

G,
Hannes
 

Lesen sie die antworten

#1 Christian Winter
11/02/2008 - 20:36 | Warnen spam
Hannes Günther schrieb:
Ein bessere Betreff ist mir leider nicht eingefallen.

Ich stelle das Problem mal vereinfacht dar.
Es geht mir darum irgendeinen Befehl für meherer "Objekte" auszuführen
und dabei nur einen Platzhalter mitzugeben, an den dann die variablen
Objekte gesetzt werden.

Hier mal Beispielaufrufe:


aufruf:
./befehl.sh "nslookup PLATZHALTER"
./befehl.sh "scp /tmp/datei.txt :/tmp/"



befehl.sh:

#!/usr/bin/ksh
for PLATZHALTER in `cat server.txt`
do
...
done;

Hoffe es ist verstàndlich was ich meine.
In diesem Fall soll für jeden Server in server.txt der Befehl
ausgeführt werden, in dem der Servername an den PLATZHALTER
geschrieben wird.



Relativ einfach làsst sich das mit eval und single quotes oder
escapes (um vorzeitiges interpolieren der Variablen zu verhindern)
lösen:

./befehl.sh 'nslookup $PLATZHALER'
oder
./befehl.sh nslookup \$PLATZHALTER

befehl.sh:
#!/usr/bin/ksh
for PLATZHALTER in `cat server.txt`
do
eval $@
done

-Christian

Ähnliche fragen