Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用shell脚本逐行读取文件 #/bin/bash 读行时;做 grep“$line”file1.txt 如果[$状态-等式1] echo“$line”>>f2.txt 完成_Shell_Sh - Fatal编程技术网

使用shell脚本逐行读取文件 #/bin/bash 读行时;做 grep“$line”file1.txt 如果[$状态-等式1] echo“$line”>>f2.txt 完成

使用shell脚本逐行读取文件 #/bin/bash 读行时;做 grep“$line”file1.txt 如果[$状态-等式1] echo“$line”>>f2.txt 完成,shell,sh,Shell,Sh,当我执行包含上述脚本的shell脚本时。我发现以下错误: #!/bin/bash while read line; do grep "$line" file1.txt if [ $status -eq 1] echo "$line" >> f2.txt done < f3.txt /test.sh:第7行:意外标记“完成”附近的语法错误 ./test.sh:第7行:`done

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

#!/bin/bash

while read line; do
   grep "$line" file1.txt
   if [ $status -eq 1]
    echo "$line" >> f2.txt
done < f3.txt
/test.sh:第7行:意外标记“完成”附近的语法错误
./test.sh:第7行:`done
谁能帮我解释一下为什么会出现这个错误吗?

#/bin/bash
./test.sh: line 7: syntax error near unexpected token `done'
./test.sh: line 7: `done < f3.txt'
读行时;做 grep“$line”file1.txt 如果[$?-等式1];然后 echo“$line”>>f2.txt fi 完成
你的代码中有很多错误

  • if的结构是错误的
  • 关闭支架前缺少一个空间
  • 我相信你使用的$status是错误的。您可以使用$检查命令的返回状态
    #/bin/bash
    读行时;做
    grep“$line”file1.txt
    如果[$?-等式1];然后
    echo“$line”>>f2.txt
    fi
    完成
    你的代码中有很多错误

  • if的结构是错误的
  • 关闭支架前缺少一个空间
  • 我相信你使用的$status是错误的。您可以使用$检查命令的返回状态
    您的脚本可以简化为:

    #!/bin/bash
    while read line; do
       grep "$line" file1.txt
       if [ $? -eq 1 ]; then
           echo "$line" >> f2.txt
       fi
    done < f3.txt
    
    #/bin/bash
    而read-r行;做
    grep-q“$line”file1.txt | | echo“$line”>>f2.txt
    完成

    此处
    echo“$line”>>f2.txt将仅在
    grep-q
    返回非零状态时执行。

    您的脚本可以简化为:

    #!/bin/bash
    while read line; do
       grep "$line" file1.txt
       if [ $? -eq 1 ]; then
           echo "$line" >> f2.txt
       fi
    done < f3.txt
    
    #/bin/bash
    而read-r行;做
    grep-q“$line”file1.txt | | echo“$line”>>f2.txt
    完成
    此处
    echo“$line”>>f2.txt
    仅当
    grep-q
    返回非零状态时才会执行。

    在询问此处之前,请询问语法错误!在询问之前,请先询问语法错误!