2012-02-17 62 views
2

我想提領兩個或包含在一個單一的變量更多的變量,但我想不出如何做到這一點不EVAL:猛砸間接引用,其中一個變種引用多個

$:b=5 
$:c=10 
$:a='$b $c' 
$:result=`eval echo $a` 
$:echo $result 
5 10 

我期待做相同的操作,給我'結果',所以我不必做一個評估。是否有可能以任何其他方式解析由單個變量引用的多個變量?我要做到這在bash

+1

不,這是不可能的。 eval是危險的,要謹慎。任何理由這樣做? – 2012-02-17 17:02:41

+0

我維護一個腳本,用於取消引用腳本中包含變量的環境變量。環境變量是否總會包含變量尚不清楚。例如,在一次喚醒var INPUT =「曾經一次」和另一次它可能包含INPUT =「曾經有一次$ ladname」,其中$ ladname可能存在或可能不存在於我維護的腳本中。這是你的問題的複雜答案,它不是所有相關的:) – fthinker 2012-02-17 19:09:00

回答

4

總之,不,我認爲你必須使用eval作爲你的代碼中的多變量間接引用。

似乎有兩種類型的Bash的間接變量引用,一個與eval和一個用特殊符號${!var}

$ b=5 
$ a=b 
$ echo ${!a} 
5 

也許使用數組會滿足您的需求:

$ b=5 
$ c=10 
$ a=(b c) 
$ echo ${!a[0]} ${!a[1]} 
5 10 

http://tldp.org/LDP/abs/html/abs-guide.html#IVR