您的位置:首页 > 运维架构 > Shell

[shell 脚本]eval命令和命令代换 ` `和 $()

2017-06-26 19:30 260 查看

作用

$(cmd)和`cmd`的作用相同,在执行一条命令时,会将其中的``或者是$()中的语句命令执行一遍,再将结果加入到原命令。
echo `pwd`
echo $(pwd)
shell 执行该命令行,先执行命令pwd,将输出结果替代`pwd`,最后输出替换后的结果。


eg:







两者对比

相对而言,$()用起来较简洁点,倒引号较容易混淆。

多层次的替换中,倒引号需要/
处理,需要这样写
cmd/`cmd/“,写起来麻烦,看起来也不那么简洁。用(),(cmd$(cmd))相对简单点。

倒引号基本在shell中使用,移植性较高,$()不是。

eval

用法:eval cmdline

原理:eval 主要用在对参数的特殊处理上,一般的命令行,shell对参数只执行一遍。eval会对后面的cmdline进行两边扫描,如果第一遍扫描,cmdline只是个普通命令,就直接执行命令。若cmdline的变量又间接引用,则扫描第二遍,执行间接引用的语义。



当直接用
echo $cmd
时,只进行一次扫描,所以时echo hello wrold。当
eval $cmd
时,cmd里有间接引用,进行二次扫描,所以时hello world
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 命令替换 eval