Shell Cat命令由文件结尾分隔

Shell Cat命令由文件结尾分隔,shell,unix,Shell,Unix,我有剧本 #!/bin/bash set i=0; while read line do echo "$line"; $i < cat "my.log" | grep -w "$line" | wc -l; echo "$i"; if [ "$i" == 0 ]; then cat $line << "notfound.txt" fi i=0; done < "test.txt" 我的目标是测试变量i的值。如果它是0,那么我想将存储在变量$l

我有剧本

#!/bin/bash
set i=0;
while read line
do
  echo "$line";
  $i < cat "my.log" | grep -w "$line" | wc -l;
  echo "$i";
  if [ "$i" == 0 ]; then
  cat $line << "notfound.txt"
  fi
  i=0;
done < "test.txt"
我的目标是测试变量i的值。如果它是0,那么我想将存储在变量$line中的值重定向到文件“notfound.txt”

而不是

cat $line << "notfound.txt"
您没有
cat
变量,而是
echo
这些变量<代码>命令>文件会将命令的输出重定向到文件,并覆盖该文件。如果要附加该文件,请改用
>


您可以了解有关重定向的更多信息。

谢谢。我刚刚用>>替换了>,因为我需要将值附加到现有文件中。只要stackoverlow允许我:-)与您所述的问题无关,我就会接受您的答案,但是
$I
很可能是个问题-
I
是一个初始值为
0
的变量,并且永远不会被更改(尽管它被重新分配),因此将扩展到
0
。除非您的系统有一个名为
0
的命令,否则这可能会失败。。。
cat $line << "notfound.txt"
echo $line > "notfound.txt"