使用eval
例子1:
result1="r1"
result2="r2"
result3="r3"
for i in {1..3}
do
result=`eval echo '$'"result$i"`
echo $result
done
输出结果
r1
r2
r3
例子2:
#!/bin/sh
vip3="vip3333"
m=3
val=`eval echo '$'vip$m`
echo $val
输出结果
vip3333
shell 中的eval
功能说明:重新运算求出参数的内容。
语 法:eval [参数]
补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。
参 数:参数不限数目,彼此之间用分号分开。
用法:
1.eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。
2.eval也可以用于回显简单变量,不一定时复杂变量。
NAME=ZONE
eval echo $NAME等价于echo $NAME
3.两次扫描
test.txt内容:hello shell world!
(1)echo $myfile #result:cat test.txt
(2)eval echo $myfile #result:hello shell world!
从(2)可以知道第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令
4.获得最后一个参数
echo "Last argument is $(eval echo \$$#)"
echo "Last argument is $(eval echo $#)"
参考:https://www.cnblogs.com/huzhiwei/archive/2012/03/14/2395956.html
https://blog.youkuaiyun.com/kanaka10/article/details/81386620