このエントリーをはてなブックマークに追加

シェルスクリプト内で複数行のテキストをファイルに書き出すプログラムを書くことがある。 こういうときに以下のようなことをするのは結構めんどくさい。

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)のほうが良いのではと思う。まあ、どっちでもいい。




記事一覧へ