みなさんはcatコマンドを利用してテキストファイルに複数行の文字列を出力することはありますか
例えばexample.txtという空ファイルに
1234
aaaa
bbbb
という内容を記述したい場合、
$echo "1234" >> example.txt
$echo "aaaa" >> example.txt
$echo "bbbb" >> example.txt
のように記述するのもありですが行毎にコマンドを入力するのは面倒です。
そこでcatコマンド+ヒアドキュメントを利用すると
$cat << EOF > example.txt
1234
aaaa
bbbb
EOF
のように記述することが出来ます。
しかし、ヒアドキュメントは変数も認識するのでエスケープしてやらないと
${}ような文字列を含んだ場合はエラーが発生します。
$cat << EOF > example.txtのcat << EOF部分を
cat <<'EOF' とか cat <<\EOF とか cat <<"EOF" とかに変更してやると
ヒアドキュメント内のメタ文字はエスケープされます。
あまり利用しない方法かと思いますが、スクリプトでガーッとやりたい時につまづいた方の役に立てればと。