shell小记:eval

来源:互联网 发布:ios 单向链式编程 编辑:程序博客网 时间:2024/05/29 12:58

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

#! /bin/bashpipe="|"ls /home/ $pipe grep "out"

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

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

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

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


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

0 0
原创粉丝点击