Linux-eval

shell中eval的用法示例:程序员

 

语  法:eval [参数]shell

功能说明:eval会对后面的[参数]进行两遍扫描,若是在第一遍扫面后cmdLine是一个普通命令,则执行此命令;若是cmdLine中含有变量的间接引用,则保证间接引用的语义bash

补充说明:eval可读取一连串的参数,而后再依参数自己的特性来执行。spa

参  数:参数不限数目,彼此之间用分号分开。命令行

 

使用案例:code

1.不加eval则将 | 和 more 当作了参数,而不是将文件按页显示blog

[root@ipi ~]# a="ls |more"
[root@ipi ~]# $a 
ls: cannot access |more: No such file or directory

加入eval改善执行结果:ip

[root@ipi ~]#eval $a
Desktop
Documents
Downloads
install.log install.log.syslog iptables.sh
正常输出想要的结果

2.此条命令不加eval直接将${a}做为参数输出,加了eval则输出了a的赋值“123”cmd

[root@ipi ~]# a="123"
[root@ipi ~]# echo '${'"a"'}'                         
${a}
[root@ipi ~]# eval echo '${'"a"'}'                #再次执行${a}命令
123 

3.以下:table

[root@ipi ~]#  set 1 2 3 4
若是咱们要输出4 能够使用echo $4,那假设咱们不知道一共有几位,我要输出最后一位的话得用“$#”,也就是\$$# [root@ipi ~]# \$$#$4
咱们发现它并无返回咱们想要的结果,so 加入eval能够解决咱们的问题 [root@ipi
~]# eval \$$#
4

另外其余高级用法后做补充!eval是对Bash Shell命令行处理规则的灵活应用,进而构造"智能"命令实现复杂的功能。上面说起的命令是eval其中一个很普通的应用,它重复了1次命令行参数传递过程,纯粹地执行命令的命令。其实它是bash的难点,是高级bash程序员的必修之技。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息