Hallo
Ich habe ein Problem mit einem Shellscript. Ich möchte Befehle in einem String zwischenspeichern, die auf Skriptparameter zugreifen.
Beispiel: BEFEHL=„echo $1“
Mein Problem ist, das bei Verwendung von „…“ die Parameter genommen werden, die zu dem Zeitpunkt an der Position sind, ich muss aber noch shift-Befehle verwenden, durch die sich die Argumente ändern. Wenn ich ‚…‘ verwende ist die Ausgabe aber „$1“ und nicht der zugehörige Wert.
Was kann ich da nehmen?
MfG Stefan
Hi,
Beispiel: BEFEHL=„echo $1“
Mein Problem ist, das bei Verwendung von „…“ die Parameter
genommen werden, die zu dem Zeitpunkt an der Position sind,
Ja. Klar.
ich muss aber noch shift-Befehle verwenden, durch die sich die
Argumente ändern. Wenn ich ‚…‘ verwende ist die Ausgabe aber
„$1“ und nicht der zugehörige Wert.
Ja. Auch klar.
Was kann ich da nehmen?
eval
Gruss vom Frank.
eval
Hab irgendwie noch nicht kapiert, wie das genau geht. Kann mal jemand ein Beispiel machen?
Danke, Stefan
eval
Hab irgendwie noch nicht kapiert, wie das genau geht.
Warum nicht? Was hast Du versucht, was hast Du erwartet und was ist passiert?
Kann mal jemand ein Beispiel machen?
Ist doch gar nicht so schwer:
[10013] (0) frank@harbard [~] % cat foo.sh
#!/bin/sh
BEFEHL='echo $1'
while [-n "$1"]
do
eval "$BEFEHL"
shift
done
[10014] (0) frank@harbard [~] % ./foo.sh laber rabarber fasel blubber
laber
rabarber
fasel
blubber
[10015] (0) frank@harbard [~] %
Gruss vom Frank.