gpt4 book ai didi

linux - Bash 间接变量引用

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:44 25 4
gpt4 key购买 nike

编辑2:@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是一个整数。每个变量都包含一个字符串值。我想通过调用变量来调用该字符串值。但是,由于该变量内部有一个变量(num),我似乎无法让它工作。我已经浏览了 Bash 中的间接引用的手册页,但他们没有提到另一个变量内部的变量附加到字符串的情况。

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

$(var_$num)

最佳答案

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

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

数组要简单得多

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

关于linux - Bash 间接变量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com