我尝试使用下面的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_1
和hello_2
变量值提取到temp
变量中。
我尝试了以上脚本,但我无法将hello_1
和hello_2
的值转换为temp
。请帮帮我。
答案 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