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


ヒアドキュメント内の変数を展開しない方法

シェルスクリプトでヒアドキュメントを利用した場合、変数が展開されて出力されてしまいます。
バックスラッシュによるエスケープを使用せずにヒアドキュメント内の変数を展開しない方法を以下に記します。
尚、以下のスクリプトはbashでテストしました。


関連資料

変数を展開しない方法

ヒアドキュメントの開始を示すキーワード(以下の例ではEOT)をシングルクオートまたはダブルクオートで囲むだけです。
実際に以下のサンプルコードでは'EOT'"EOT"で動作確認をとりました。

変数を展開しないヒアドキュメントのサンプルコード

#!/bin/bash

MSG1="HELLO WORLD.(test1)"
MSG2="HELLO WORLD.(test2)"
MSG3="HELLO WORLD.(test3)"

echo "here document test 1."
cat << EOT
<HTML>
<BODY>
$MSG1
</BODY>
</HTML>
EOT

echo "here document test 2."
cat << 'EOT'
<html>
<body>
$MSG2
</body>
</html>
EOT

echo "here document test 3."
cat << "EOT"
<html>
<body>
$MSG3
</body>
</html>
EOT

実行結果

以下のスクリーンショットは上記サンプルコードを実行した結果です。
ヒアドキュメントで変数展開がされていないのが確認できます。

heredocument-01.gif


添付ファイル: fileheredocument-01.gif 743件 [詳細] fileheredocument.sh 617件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:00