#navi(../)

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

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連資料 [#le56b029]
-[[逆引きシェルスクリプト/シェルスクリプトで複数行をまとめてコメントアウトする方法]]
-[[逆引きシェルスクリプト/ヒアドキュメントをファイルに出力する方法]]
-[[ペーストした文字列をファイルに出力する簡単な方法・cat>逆引きUNIXコマンド/ペーストした文字列をファイルに出力する簡単な方法・cat]]

* 変数を展開しない方法 [#wa7791fc]
ヒアドキュメントの開始を示すキーワード(以下の例ではEOT)をシングルクオートまたはダブルクオートで囲むだけです。~
実際に以下のサンプルコードでは''&color(red){'};EOT&color(red){'};''と''&color(red){"};EOT&color(red){"};''で動作確認をとりました。

**変数を展開しないヒアドキュメントのサンプルコード [#p99bb83b]
#ref(heredocument.sh)
 #!/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

**実行結果 [#h94c1376]
以下のスクリーンショットは上記サンプルコードを実行した結果です。~
ヒアドキュメントで変数展開がされていないのが確認できます。
#ref(heredocument-01.gif)

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS