【bash】ヒアドキュメントで変数展開しないようにする

スポンサーリンク

シェルスクリプトで

#!/bin/bash
cat << EOF
$hogehoge
EOF

とすると$hogehogeがシェルスクリプト実行時に変数展開されてしまい、変数hogehogeに何も設定していない場合は何も出力されません。変数展開せずに「$hogehoge自体」を出力したい場合は,ヒアドキュメントの終了文字列を'(シングルクオート)で囲めばいいみたいです。

#!/bin/bash
cat << 'EOF'
$hogehoge
EOF

こうすると「$hogehoge」が出てきます。PHPのヒアドキュメントがこんな感じの動作だったような気もする。PHP5.3かそこらへんからこんな感じだったような。

ヒアドキュメントで変数展開したくない | badulogさんのブログが参考になりました。ありがとうございます。

φ(..)メモメモ