2012-04-04 52 views
2

如何訪問訪問作爲bash腳本的參數傳遞的變量的內容?如何在參數中訪問變量的內容?

例如:sh myscript.sh PATH。現在我想修改PATH中的字符串,但在訪問它時一直失敗!

任何想法?

編輯:我需要能夠訪問任何變量,而不僅僅是PATH

+0

你是什麼意思的 「內部路徑字符串」 嗎? PATH是一個字符串。 $ PATH是一個不同的字符串。你問的是字符串「PATH」還是名爲PATH的變量? – 2012-04-04 11:22:09

+0

那麼,我想要'$ PATH'會產生的字符串。更一般地說,我想要'$ ARGUMMENTTOMYSCRIPT' – TeaOverflow 2012-04-04 11:32:54

+0

我想不出爲什麼你會想要,除非作爲一個家庭作業練習。你想要實現的是什麼,比傳遞變量更簡單? – l0b0 2012-04-04 12:09:48

回答

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

給出:

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

謝謝。作品 – TeaOverflow 2012-04-04 12:08:32

+1

[Eval is evil](http://mywiki.wooledge.org/BashFAQ/048) – l0b0 2012-04-04 12:11:08

2

像這樣的東西應該爲你工作:

#!/bin/bash 

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

有了,如果執行這樣的腳本:

./myscript.sh PATH 

它在標準輸出上打印$PATH值。

+0

即使'VAL = $ {!1}'也能正常工作。 – anubhava 2012-04-04 11:37:32

+0

這兩種可能性在Ubuntu 11.10,bash v。4.2中都給我帶來了壞代替,遺憾的是:.-( – TeaOverflow 2012-04-04 11:42:04

+0

如果你用'sh'運行你的腳本,這並不奇怪,'sh' is * not * Bash。 – l0b0 2012-04-04 12:12:03