我有以下脚本
#!/bin/bash
set i=0;
while read line
do
  echo "$line";
  $i < cat "my.log" | grep -w '$line' | wc -l;
  echo "$i";
  i=0;
done < "test.txt"
test.txt 有像
abc
def
lmn
我的日志具有类似的值
> INFO 2013-08-16 13:46:48,660 Index=abc insertTotal=11  
> INFO 2013-08-16 13:46:48,660 Index=abcd insertTotal=11  
> INFO 2013-08-16 13:46:48,660 Index=def insertTotal=11  
> INFO 2013-08-16 13:46:48,660 Index=abcfe insertTotal=11
目标是从 中选取每个值test.txt并在my.log文件中搜索该模式。
找到模式的次数分配给变量i。
我将检查 的值,i如果是0或找不到模式,那么我希望将该模式存储在另一个文件中。
目前,我得到
./parser.sh: line 7: cat: No such file or directory
我已经在命令行上尝试了 cat 命令,它运行良好,但它在脚本中给出了这个错误。
小智 7
您正在尝试使用一个名为的文件cat作为名为0. 那行不通。
代替
$i < cat "my.log" | grep -w "$line" | wc -l;
做这个:
i=$(cat "my.log" | grep -w "$line" | wc -l)
有关引号的讨论,请参阅Bash 中单引号和双引号之间的差异问题,有关 bash 中命令替换的说明,请参阅http://tldp.org/LDP/abs/html/commandsub.html。