Linux下eval用法

eval简介

eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义。

eval用法1:回显简单变量

在linux目录/data/test1下,新建文件config,内容为:
aa=2017
bb=2018

 

新建脚本param.sh,脚本内容为:
#!/usr/bin/env bash
while read line
do
  echo $line
  key=`echo $line | awk -F’=’ ‘{print $1}’`
  value=`echo $line | awk -F’=’ ‘{print $2}’`
  eval $key=$value
done < config

 

echo “aa:”${aa}
echo “bb:”${bb}

 

执行脚本

./param.sh

 

eval用法2:

linux下,执行如下
set 11 22 33 44
如果要输出最近一个参数,即44,可以使用如下命令,
echo $4
但是如果我们不知道有几个参数的时候,要输出最后一个参数,大家可能会想到使用$#来输出最后一个参数,
如果使用命令:
echo “\$$#”
则得到的结果是 $4,而不是我们想要的44。这里涉及到一个变量间接引用的问题,我们的本意是输出 $4,默认情况下,命令后忽略变量间接引用的情况。
这时候,就可以使用eval命令。
eval echo “\$$#”
得到的结果为44

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注