Linux eval命令
1、eval命令将会首先扫描命令行进行所有的替换,再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。
2、eval也可以用于回显简单变量,不一定时复杂变量。
[root@node2 mysql]# NAME=ZONE [root@node2 mysql]# eval echo $NAME ZONE ----等价于 [root@node2 mysql]# echo $NAME ZONE
3、两次扫描
[root@node2 app]# cat test.txt hello shell world! [root@node2 app]# myfile="cat test.txt" (1)[root@node2 app]# echo $myfile cat test.txt (2)[root@node2 app]# eval echo $($myfile) hello shell world!
从(2)可以知道第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令。
4、获得最后一个参数
[root@node2 app]# echo "Last argument is $(eval echo \$$#)" Last argument is -bash [root@node2 app]# echo "Last argument is $(eval echo $#)" Last argument is 0