shell用变量的值作为新的变量名,并输出新变量名所对应的值

使用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!

myfile="cat test.txt"

(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.csdn.net/kanaka10/article/details/81386620

你可能感兴趣的:(shell)