Linux之eval

eval :命令替换
编写以下脚本,实现统计当前目录中文件个数。
这里写图片描述
结果如下:
这里写图片描述
报错了。这时因为没有解释出pipe变量的内容,所以会报错。
加上eval后
这里写图片描述
结果为:
这里写图片描述
达到预期效果。eval进行两次扫描,第一次扫描,将pipe变量替换为 | ,第二次扫描再执行命令行命令,这时,shell会识别 | 为管道符号,所以命令成功运行。
但是同是命令替换,反引号`和$()却没有这种效果。他们只是会将pipe替换 | ,但是shell却无法识别此时的 | 。所以结果会报错。

再举个例子说明。
有一个files文件内容为hello file
编写一个shell脚本,先用一个变量接收file的内容,再将该变量的内容显示出来。
没用eval时
这里写图片描述
结果为
这里写图片描述
没有解析cat命令。
换成eval
这里写图片描述
结果为:
这里写图片描述
总结:eval 可以替换间接的命令,并使shell识别。
反引号和$()只能替换简单命令。
ps:反引号与$()的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值