如何在shell脚本中将一个变量值分配给另一个变量

时间:2014-12-29 03:37:39

标签: shell

我尝试使用下面的shell代码来获取temp的值为"良好的1"和#34;好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。请帮帮我。

1 个答案:

答案 0 :(得分:4)

如果您使用bash 4或更高版本,请阅读indirect references。但要回答你的问题,你可以做到

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
在shell编程中,

eval通常被视为evil。不要养成使用它的习惯。

关键技术是eval提供对该线的第二次评估。在第一遍看起来像

 eval temp="$hello_1"

请注意$i如何显示为1,以及\\字符从\$hello_1中移除,因此  当执行eval时,对该行的处理采用$hello_1变量的值并将其分配给temp,即

 temp="good 1"

IHTH