LoginSignup
50
37

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" とかに変更してやると
ヒアドキュメント内のメタ文字はエスケープされます。

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

50
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
37