0
点赞
收藏
分享

微信扫一扫

linux eval命令参数及用法

功能说明:重新运算求出参数的内容。

语  法:​​su​​lt:cat test.txt

(2)eval(eval(eval()取得。

2.shell 中的 eval(eval("code")),来执行(执行动态生成的code的返回),而由于shell 中 eval(){
        if [ $cnt = 1 ];then
                eval(root)
uid=0(root)
uid=0(root)
uid=0(root)
uid=0(root)
注意:bash里有两个很特殊的变量,它们保存了参数列表。

$*,保存了以$IFS指定的分割符所分割的字符串组。
$@,原样保存了参数列表,也就是"$1""$2"...

这里我使用了函数递归以及eval(root)

如果命令行复杂的话(包括管道或者其他字符),直接执行$a字符串的内容就会出错。分析如下。
$a的处理位于第6步──参数扩展,也就是说,跳过了管道分析,于是"|", "cut", "-f1", "-d"都变成了id命令的参数,当然就出错啦。
但使用了eval(dir​​​col​​​ors -b /etc/dircolors)

eval()是命令替换,返回命令的输出字符串。
其中dircolors命令根据/etc/dircolors配置文件生成设置环境变量LS_COLORS的bash代码,内容如下

[root@localhost root]# dircolors -b > tmp
[root@localhost root]# cat tmp
LS_COLORS='no=00:fi=00:di=01;34:​​​ln​​​=01; ......
​​​export​​​ LS_COLORS
#这里我没有指定配置文件,所以dircolors按预置数据库生成代码。
其输出被eval命令传递给shell执行。

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

​​ http://www.linuxso.com/command/eval.html ​​

举报

相关推荐

0 条评论