Unix Cat:没有这样的文件或目录错误

Mac*_*cky 3 unix shell

我有以下脚本

#!/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"
Run Code Online (Sandbox Code Playgroud)

test.txt 有像

abc
def
lmn
Run Code Online (Sandbox Code Playgroud)

我的日志具有类似的值

> 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
Run Code Online (Sandbox Code Playgroud)

目标是从 中选取每个值test.txt并在my.log文件中搜索该模式。

找到模式的次数分配给变量i

我将检查 的值,i如果是0或找不到模式,那么我希望将该模式存储在另一个文件中。

目前,我得到

./parser.sh: line 7: cat: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我已经在命令行上尝试了 cat 命令,它运行良好,但它在脚本中给出了这个错误。

小智 7

您正在尝试使用一个名为的文件cat作为名为0. 那行不通。

代替

$i < cat "my.log" | grep -w "$line" | wc -l;
Run Code Online (Sandbox Code Playgroud)

做这个:

i=$(cat "my.log" | grep -w "$line" | wc -l)
Run Code Online (Sandbox Code Playgroud)

有关引号的讨论,请参阅Bash 中单引号和双引号之间差异问题,有关 bash 中命令替换的说明,请参阅http://tldp.org/LDP/abs/html/commandsub.html