我已经编写了shell脚本,它从输入文件中读取命令并执行命令。我有这样的命令:
cat linux_unit_test_commands | grep "dmesg" 在输入文件中。在执行shell脚本时,我收到下面的错误消息:
cat: |: No such file or directory
cat: grep: No such file or directory
cat: "dmesg": No such file or directory剧本:
#!/bin/bash
while read line
do
output=`$line`
echo $output >> logs
done < $1下面是输入文件(Example_commands):
ls
date
cat linux_unit_test_commands | grep "dmesg"执行:./linux_unittests.sh example_commands
请帮我解决这个问题。
发布于 2015-02-20 08:11:10
像|和"这样的特殊字符在展开变量后不会被解析;变量展开后所做的唯一处理是分词和通配符展开。如果希望对行进行完全解析,则需要使用eval
while read line
do
output=`eval "$line"`
echo "$output" >> logs
done < $1发布于 2015-02-20 09:45:45
您可能会想知道为什么它不能使用cat命令。下面是你问题的答案。
output=`$line` i.e. output=`cat linux_unit_test_commands | grep "dmesg"`在这里,cat命令将所有这些作为参数,即linux_unit_test_commands,fileNames。
来自手册页:
语法:猫选项..。档案..。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
脚本很好!
#!/bin/bash
while read line;
do
output=`$line`
echo $output >> logs
done < $1要使其工作,您需要将的cat:"dmesg":没有这样的文件或目录‘到'grep "dmesg“linux_unit_test_commands'。看起来不错!
cat linux_unit_test_commands
ls
date
grep "dmesg" linux_unit_test_commandshttps://stackoverflow.com/questions/28624227
复制相似问题