如何訪問訪問作爲bash腳本的參數傳遞的變量的內容?如何在參數中訪問變量的內容?
例如:sh myscript.sh PATH
。現在我想修改PATH
中的字符串,但在訪問它時一直失敗!
任何想法?
編輯:我需要能夠訪問任何變量,而不僅僅是PATH
如何訪問訪問作爲bash腳本的參數傳遞的變量的內容?如何在參數中訪問變量的內容?
例如:sh myscript.sh PATH
。現在我想修改PATH
中的字符串,但在訪問它時一直失敗!
任何想法?
編輯:我需要能夠訪問任何變量,而不僅僅是PATH
#!/bin/bash
FOO=$(eval echo \$$1)
echo args: $FOO
給出:
$ foo.sh HOME
args: /home/bos
謝謝。作品 – TeaOverflow 2012-04-04 12:08:32
[Eval is evil](http://mywiki.wooledge.org/BashFAQ/048) – l0b0 2012-04-04 12:11:08
像這樣的東西應該爲你工作:
#!/bin/bash
ARG=$1
VAL=${!ARG}
echo $VAL
有了,如果執行這樣的腳本:
./myscript.sh PATH
它在標準輸出上打印$PATH
值。
即使'VAL = $ {!1}'也能正常工作。 – anubhava 2012-04-04 11:37:32
這兩種可能性在Ubuntu 11.10,bash v。4.2中都給我帶來了壞代替,遺憾的是:.-( – TeaOverflow 2012-04-04 11:42:04
如果你用'sh'運行你的腳本,這並不奇怪,'sh' is * not * Bash。 – l0b0 2012-04-04 12:12:03
你是什麼意思的 「內部路徑字符串」 嗎? PATH是一個字符串。 $ PATH是一個不同的字符串。你問的是字符串「PATH」還是名爲PATH的變量? – 2012-04-04 11:22:09
那麼,我想要'$ PATH'會產生的字符串。更一般地說,我想要'$ ARGUMMENTTOMYSCRIPT' – TeaOverflow 2012-04-04 11:32:54
我想不出爲什麼你會想要,除非作爲一個家庭作業練習。你想要實現的是什麼,比傳遞變量更簡單? – l0b0 2012-04-04 12:09:48