導入
設定ファイルを作りたい、メール本文を組み立てたい、使い方(usage)を表示したい。echo を何行も並べるのは読みにくいものです。ヒアドキュメントを使うと、複数行のテキストをそのままの形で書けます。
説明
<<終端文字 と書くと、そこから終端文字だけの行までが、まとめて入力として渡されます。
#!/bin/bash
APP=becomecoder
cat <<EOF
使い方: sh script.sh 対象ファイル
このスクリプトは $APP のログを集計します。
複数行を、見たままの形で書けます。
EOF
終端文字は慣習的に EOF(End Of File)が使われますが、END でも MSG でも構いません。中に登場しない単語であることだけが条件です。
ヒアドキュメントの中では、$変数 は展開されます。展開させたくない($ を文字として出したい)ときは、終端文字を引用符で囲みます。
cat <<'EOF'
この中の $HOME は展開されません
EOF
ファイルに書き出したいときは、リダイレクトと組み合わせます。設定ファイルをスクリプトから生成する定番の形です。
cat <<EOF > config.txt
name=$APP
debug=false
EOF
flowchart LR
A["cat <<EOF"] --> B["EOF までの行"] --> C["cat の標準入力へ"] --> D["画面 or > file"]
やってみよう
スクリプトを実行して、複数行がそのまま出ることを確かめましょう。次に cat <<EOF > config.txt の形に書き換えて実行し、端末で cat config.txt と打ってファイルができていることを確認してください。
演習
ヒアドキュメントを使って config.txt を作り、その中身を cat config.txt で表示してください(中身に name=becomecoder を含めること)。
ヒント1を見る
cat <<EOF > config.txt で始め、EOF だけの行で終わります。
ヒント2を見る
最後に cat config.txt を書き足すと中身が確認できます。