在CygWin中意外令牌'完成'附近的语法错误

时间:2013-06-07 08:35:05

标签: bash cygwin

我在CygWin中使用这个脚本:

    #!/bin/sh
    rm -f nplist.txt
    find . -name "*.html"| while read file; do
        awk '
            /titleTable/ { if (NR==53) match1=1 }
            /id="maincontainer"/ { if (NR==169) match2=1 }
        { if (match1 && match2) exit 69 }
        ' file
        if test $? -eq 69; then
            echo $file
            sed -i '53,121d; 166,168d' $file
        else
        echo $file >>nplist.txt
       fi
    done

..和终端告诉我:

/cygdrive/c/1/test.sh: line 14: syntax error near unexpected token `done'
/cygdrive/c/1/test.sh: line 14: `done'

为什么呢?拜托,有人帮助我!

1 个答案:

答案 0 :(得分:0)

Linux上的Bash 4.2.45执行脚本没有问题。请检查帖子中的脚本文本是否与您的文件匹配。检查文件中是否有任何特殊字符在传输到帖子文本时丢失。尝试简化脚本,逐个删除命令并检查它是否开始工作。

否则,我发现您的脚本存在一个问题:awk接收文字字符串file作为要操作的文件,而不是$file变量值。