Glide Note

glidenote's blog

Shellでヒアドキュメント利用時に変数展開を抑制する

zshやbashでヒアドキュメントを利用するときに、いつも忘れてやらかすのでメモ

変数展開してしまう例

1
2
3
4
5
6
7
cat << EOF >/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF
1
2
3
4
5
6
7
cat /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos///
gpgcheck=0
enabled=1

$releasever$basearchが変数として展開されてしまう。

変数展開しない例

区切りシンボルをシングルクオート'かバッククオート"することで 変数展開を抑制出来る。

1
2
3
4
5
6
7
cat << 'EOF' >/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF
1
2
3
4
5
6
7
cat /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

参考記事

Comments