首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >file_name脚本中的cat : grep:没有这样的文件或目录

问file_name脚本中的cat : grep:没有这样的文件或目录
EN

Stack Overflow用户
提问于 2015-02-20 08:05:46
回答 2查看 2.4K关注 0票数 1

我已经编写了shell脚本,它从输入文件中读取命令并执行命令。我有这样的命令:

代码语言:javascript
复制
cat linux_unit_test_commands | grep "dmesg" 

在输入文件中。在执行shell脚本时,我收到下面的错误消息:

代码语言:javascript
复制
cat: |: No such file or directory
cat: grep: No such file or directory
cat: "dmesg": No such file or directory

剧本:

代码语言:javascript
复制
 #!/bin/bash

 while read line
 do
     output=`$line`
     echo $output >> logs
 done < $1

下面是输入文件(Example_commands):

代码语言:javascript
复制
ls
date
cat linux_unit_test_commands | grep "dmesg"

执行:./linux_unittests.sh example_commands

请帮我解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 08:11:10

像|和"这样的特殊字符在展开变量后不会被解析;变量展开后所做的唯一处理是分词和通配符展开。如果希望对行进行完全解析,则需要使用eval

代码语言:javascript
复制
while read line
do
    output=`eval "$line"`
    echo "$output" >> logs
done < $1
票数 2
EN

Stack Overflow用户

发布于 2015-02-20 09:45:45

您可能会想知道为什么它不能使用cat命令。下面是你问题的答案。

代码语言:javascript
复制
output=`$line` i.e. output=`cat linux_unit_test_commands | grep "dmesg"`

在这里,cat命令将所有这些作为参数,即linux_unit_test_commands,fileNames。

来自手册页:

语法:猫选项..。档案..。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

脚本很好!

代码语言:javascript
复制
#!/bin/bash

while read line;
do
    output=`$line`
    echo $output >> logs
done < $1

要使其工作,您需要将的cat:"dmesg":没有这样的文件或目录‘到'grep "dmesg“linux_unit_test_commands'。看起来不错!

代码语言:javascript
复制
cat linux_unit_test_commands

ls
date
grep "dmesg" linux_unit_test_commands
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28624227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档