103.4標準
catへ複数行をヒアドキュメントで渡す。
本文中の$HOMEは変数展開せず、文字列$HOMEのまま表示する。Bashを使う。
適切な開始行はどれか。
× 不正解
ヒアドキュメントの区切り語を引用すると、本文中のパラメータ展開、コマンド置換、算術展開を抑止できる。
詳細解説
誤り
cat <<EOF区切り語が未引用なので、本文中の$HOMEが展開される。
$HOMEが現在値へ展開される。
誤り
cat < EOFEOFという名前のファイルを標準入力として開こうとする。
EOFというファイルを開く通常の入力リダイレクトである。
誤り
cat <<<EOFEOFという1行だけを渡すヒアストリングで、後続の複数行本文を受けない。
複数行の終端構文を開始しない。
正しい
cat <<'EOF'区切り語を引用すると、ヒアドキュメント本文のパラメータ展開等を抑止する。
正解。本文をリテラルとしてcatへ渡す。
実際に確かめる
一時的な検証環境で実行できる例です。
cat <<'EOF'
path=$HOME
EOF期待される結果
path=$HOME理解のポイント
- <<はヒアドキュメント
- 引用した区切り語は本文展開を抑止
- 標準入力として渡される
確認時の注意
- 確認環境: Bash 5.2
基礎のおさらい
終端行
終了側は引用符を付けず、余分な空白もないEOFだけの行にする。
用途
設定断片や複数行データをコマンドへ渡せるが、インデントや展開の有無を明確にする。
問題IDKP-103-077
確認環境Bash 5.2
最終技術確認2026-08-12
誤り・権利侵害を報告