如何在Shell脚本中将一个变量的值赋给另一个变量

4
我尝试了下面的Shell代码来获取"temp"的值为"good 1"和"good 2",但是我没有成功。
hello_1="good 1"
hello_2="good 2"
for i in 1 2
do
temp="hello_$i"
echo $temp
done

我想将hello_1hello_2变量的值提取到temp变量中。 我尝试了上面的脚本,但无法将hello_1hello_2的值提取到temp中。请帮助我。

可以尝试像 ${hello_${i}} 这样连接字符串。尝试一下并告诉我们是否有效。还可以尝试打印输出该值。 - Jigar
1个回答

4
如果您使用的是bash 4或更高版本,请了解一下间接引用。但是为了回答您的问题,您可以这样做:
hello_1="good 1"
hello_2="good 2"
for i in 1 2
do
    eval temp="\$hello_$i"
    echo $temp
done

输出

good 1
good 2

eval在shell编程中通常被认为是有害的。不要养成使用它的习惯。

关键技术在于eval提供了对该行代码的第二次评估。在第一次评估时,它看起来像:

 eval temp="$hello_1"

请注意,$i显示为1,并且前导的\\字符从\$hello_1中被移除,因此当执行eval时,行的处理将$hello_1变量的值分配给temp。即。
 temp="good 1"

IHTH


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接