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)
答案 0 :(得分:0)
在bash中这真的很尴尬:你需要一个临时变量来保存构造的变量名:
$ var_1=hello
$ num=1
$ tmp=var_$num
$ echo ${!tmp}
hello
阵列更简单
$ var=( [1]=world )
$ echo ${var[$num]}
world