ここに文書をインデントすると、構文エラーが発生する可能性があります。

ここに文書をインデントすると、構文エラーが発生する可能性があります。

私のシェルスクリプトには次のコードスニペットがありますが、エラーがあり、いくつかの調査にもかかわらず原因を特定できないようです。次のコードを実行すると、スクリプトはメッセージで終了します。

./my_script.sh:  line 53: syntax error at line 61: `<<' unmatched

私はこれを使用し、set -xエラーが発生するまですべてが大丈夫であることがわかります(とにかく変数のみを設定しました)。何らかの理由で前の空白(表示されていない文字ではなく空白)を削除するだけでeot機能します。私のXMLは少し間違ってソートされているように見えますが、うまく動作します。説明できないこのようなことが嫌いで、XMLもきれいに見えることを望むので、なぜこのようなことが起こるのか知っている人はいますか?

スクリプトの関連部分は次のとおりです。

# ... various environment variables set here ...

clean_files()          # line 53
{
    # Clear up the intermediate files
    mv $datafile $ARCHIVE_DIR/$(basename $datafile).$$
}

xmlfile_header()
{                      # line 60
        cat <<- eot
                <?xml version="1.0" encoding="UTF-8" ?>
                <ppllist>
        eot  
}

# ... more stuff ...

ベストアンサー1

<<- wordhere-doc フォームには次のものが必要です。タブのみ以前に表示されることがありますword。スペースは許可されず、タブでなければなりません。

引用:http://www2.research.att.com/sw/download/man/man1/ksh.html#Input/Output

おすすめ記事