シェルスクリプト内で複数行のテキストをファイルに書き出すプログラムを書くことがある。 こういうときに以下のようなことをするのは結構めんどくさい。
cat "文字列1行目" >> out.txt cat "文字列2行目" >> out.txt cat "文字列3行目" >> out.txt
複数行のテキストを扱う場合、ヒアドキュメント(Here document)という文法を利用して同じことをすることができる。
cat << EOT > out.txt 文字列1行目 文字列2行目 文字列3行目 EOT
例では、catに対して1行目のEOTから最後のEOTまでの内容を呼び出して出力した標準出力をout.txtにリダイレクトしている。
EOTの部分は任意の文字列でOKです。ほかの人が見たときに解り易いので慣例に従うならEOTやEOFといったキーワードが使われる。 よくEOFとしているのを見ることがあるがEOFはEnd of Fileと解釈することが一般的なので、単純にテキストの場合は、EOT(End of Text)のほうが良いのではと思う。まあ、どっちでもいい。