2012-04-04 5 views
2

Wie greife ich auf den Zugriff auf den Inhalt einer Variablen zu, die als Argument an ein Bash-Skript übergeben wird?Wie kann man auf den Inhalt einer Variablen im Argument zugreifen?

Beispiel: sh myscript.sh PATH. Jetzt möchte ich die Zeichenfolge innerhalb PATH ändern, aber immer noch fehlgeschlagen Zugriff auf es!

Irgendwelche Ideen?

Edit: Ich brauche jede Variable zugreifen zu können, nicht nur PATH

+0

Was meinst du mit "String in PATH"? PATH ist eine Zeichenfolge. $ PATH ist eine andere Zeichenfolge. Fragen Sie nach der Zeichenfolge "PATH" oder der Variablen namens PATH? –

+0

Nun, ich möchte die Zeichenfolge, die $ PATH produzieren würde. Allgemeiner möchte ich '$ ARGUMENTTOMYSCRIPT' – TeaOverflow

+0

Ich kann nicht denken, warum Sie das als eine Hausübung nur wünschen würden. Was versuchen Sie zu erreichen, ist einfacher als nur die Variable zu übergeben? – l0b0

Antwort

0
#!/bin/bash 
FOO=$(eval echo \$$1) 
echo args: $FOO 

gibt:

$ foo.sh HOME 
args: /home/bos 
+0

Danke funktioniert. – TeaOverflow

+1

[Eval ist böse] (http://mywiki.wooledge.org/BashFAQ/048) – l0b0

2

So etwas sollte für Sie arbeiten:

#!/bin/bash 

ARG=$1 
VAL=${!ARG} 
echo $VAL 

dass mit, wenn Sie Ihr Skript wie folgt auszuführen:

./myscript.sh PATH 

Es druckt $PATH Wert auf STDOUT.

+0

Sogar' VAL = $ {! 1} 'funktioniert auch gut. – anubhava

+0

Beide Möglichkeiten geben mir 'Bad substitution' auf Ubuntu 11.10, bash v.4.2, leider: .- ( – TeaOverflow

+0

Wenn du dein Skript mit' sh' ausführst, ist das keine Überraschung. 'Sh' ist * nicht * Bash. – l0b0