0

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'

なんで?誰か助けてください!

4

1 に答える 1

0

Linux 上の Bash 4.2.45 では、スクリプトの実行に問題はありません。投稿のスクリプト テキストがファイルと一致していることを確認してください。投稿テキストに転送するときに失われる特殊文字がファイルにあるかどうかを確認します。スクリプトを単純化し、コマンドを 1 つずつ削除して、動作するかどうかを確認してみてください。

それ以外の場合、スクリプトに問題が 1 つあります。awk は、変数値fileではなく、操作対象のファイルとしてリテラル文字列を受け取ります。$file

于 2013-06-07T09:09:47.963 に答える