Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
35
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

ヒアドキュメントの変数エスケープ

みなさんはcatコマンドを利用してテキストファイルに複数行の文字列を出力することはありますか

例えばexample.txtという空ファイルに
1234
aaaa
bbbb
という内容を記述したい場合、

$echo "1234" >> example.txt
$echo "aaaa" >> example.txt
$echo "bbbb" >> example.txt

のように記述するのもありですが行毎にコマンドを入力するのは面倒です。

そこでcatコマンド+ヒアドキュメントを利用すると

$cat << EOF > example.txt
1234
aaaa
bbbb
EOF

のように記述することが出来ます。

しかし、ヒアドキュメントは変数も認識するのでエスケープしてやらないと
${}ような文字列を含んだ場合はエラーが発生します。

$cat << EOF > example.txtのcat << EOF部分を
cat <<'EOF' とか cat <<\EOF とか cat <<"EOF" とかに変更してやると
ヒアドキュメント内のメタ文字はエスケープされます。

あまり利用しない方法かと思いますが、スクリプトでガーッとやりたい時につまづいた方の役に立てればと。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
35
Help us understand the problem. What are the problem?