使用shell脚本逐行读取文件

时间:2014-05-11 10:19:51

标签: shell sh

#!/bin/bash

while read line; do
   grep "$line" file1.txt
   if [ $status -eq 1]
    echo "$line" >> f2.txt
done < f3.txt

当我执行包含上述脚本的shell脚本时。我收到以下错误:

./test.sh: line 7: syntax error near unexpected token `done'
./test.sh: line 7: `done < f3.txt'

任何人都可以帮助我,为什么我会收到此错误?

2 个答案:

答案 0 :(得分:2)

#!/bin/bash
while read line; do
   grep "$line" file1.txt
   if [ $? -eq 1 ]; then
       echo "$line" >> f2.txt
   fi
done < f3.txt

您的代码中存在大量错误。

  1. if的结构错误
  2. 在结束打结之前有一个空格
  3. 我相信你使用的$ status是错误的。您使用$检查命令的返回状态?

答案 1 :(得分:2)

您的脚本可以简化为:

#!/bin/bash

while read -r line; do
   grep -q "$line" file1.txt || echo "$line" >> f2.txt
done < f3.txt

echo "$line" >> f2.txt仅在grep -q返回非零状态时才会执行。