サイトアイコン 協栄情報ブログ

ヒアドキュメント(heredoc)のメリットと使用例について

ヒアドキュメント(Here Document)

概要

ヒアドキュメントは、シェルスクリプトで複数行の文字列を扱うための機能。<< 演算子を使用して、指定した区切り文字まで標準入力として扱う。
私はDockerファイルやビルド検証でよく使う。他にも色々と使える場面があってすごく便利。特に検証でviを何度も編集する時に別の選択肢としてヒアドキュメント使えると便利。

メリット

使用場面

viエディタとの使い分け

ヒアドキュメントを使う場面:

viエディタを使う場面:

# ヒアドキュメント:1つのコマンドで完結
cat << EOF > test.txt
テスト用ファイル
複数行対応
EOF

# viの場合:エディタを開く→編集→保存→終了の手順が必要
vi test.txt  # エディタが開く

基本構文

1. 標準入力(基本的な出力)

cat << EOF
複数行のテキスト
変数展開: ${USER}
コマンド実行: $(date)
EOF

仕組み:

2. ファイル作成

cat << EOF > output.txt
ファイルに出力
複数行対応
変数: ${HOME}
現在時刻: $(date)
EOF

実用例

ファイル作成

cat << EOF > config.ini
[database]
host=localhost
user=${DB_USER}
password=${DB_PASS}
EOF

Dockerファイル作成と検証

# Dockerfileを作成
cat << EOF > Dockerfile.test
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE ${PORT:-3000}
CMD ["npm", "start"]
EOF

# ビルド検証
docker build -f Dockerfile.test -t test-app .

参考

ヒアドキュメント
https://ja.wikipedia.org/wiki/%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88

モバイルバージョンを終了