Bash间接变量引用

时间:2015-09-05 22:11:42

标签: linux bash variables

EDIT2:@glenn jackman我认为这会解决它,但它仍然在我的完整脚本中出错。为什么不工作?是否由于间接参考?

#!/home/$current_user/Desktop/expect
...
    COUNTER=0
         while [  $COUNTER -lt $num ]; do
             let index=COUNTER+1
             tmp=user_$index
             echo "Changing Password for " ${!tmp}
             echo ${!tmp}
             sudo passwd ${!tmp}
             expect -exact "[sudo] password for $current_user: "
             send "$pass\r"
             interact
             expect -exact "New password: "
             send "$password\r"
             interact
             let COUNTER=COUNTER+1 
         done
编辑:!或者/ $$用于调用其他变量中的变量。对于变量是字符串一部分的情况,我需要帮助。

我对Bash中的间接变量引用有一个简单的问题。

eval "\${user_$index\}"  #First attempt
echo \$${eval "{user_\$index}"} #Second attempt

基本上我有几个名为“user_ num ”的变量,其中 num 是一个整数。每个变量都包含一个String值。我想通过调用变量来调用该字符串值。但是,由于变量内部有一个变量( num ),我似乎无法使其正常工作。我在Bash中查看了间接引用的Man页面,但没有提到另一个变量中的变量附加到字符串的情况。

TLDR:我的问题是你如何做到这一点:

$(var_$num)

1 个答案:

答案 0 :(得分:0)

在bash中这真的很尴尬:你需要一个临时变量来保存构造的变量名:

$ var_1=hello
$ num=1
$ tmp=var_$num
$ echo ${!tmp}
hello

阵列更简单

$ var=( [1]=world )
$ echo ${var[$num]}
world