shell小记:eval

shell在执行命令的时候,有一些符号需要shell能够直接能够看到的,例如管道 |,重定向 (>, <, >>, <<)等,所以此时如果有以下语句:

#! /bin/bash

pipe="|"
ls /home/ $pipe grep "out"

 按照我们的想法, ls /home/ $pipe grep "out"实质就是 ls /home/ | grep "out",该语句是没有问题的,但是由于管道这些符号,shell需要能够直接在语句中看到,所以该语句执行会出现错误: 

ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
ls: cannot access set: No such file or directory
以上出现找不到 |,grep,set的错误

所以此时我们需要通过使用eval来解决该问题,eval添加到语句的开头,在执行该语句的时候,会扫描两次该语句:第一次扫描能够替换变量对应的值,第二次扫描就是为了识别语句并运行该语句,所以改为:

#! /bin/bash

pipe="|"
eval ls /home/ $pipe grep "out"  #添加eval


eval的使用主要是当我们的变量出现了一些特殊的符号,需要被shell能够直接看到的,此时就需要使用eval。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值