ヒアドキュメントで変数やコマンドを展開したくない場合は終了文字列をクォートする

試した環境

本題

通常のヒアドキュメントはドキュメント内の変数やコマンドを展開します。

$ cat << EOT
pi = $(echo | awk '{print atan2(0, -1)}')
EOT
pi = 3.14159

終了文字列を指定する際に終了文字列をクォートすると展開されなくなります。

$ cat << 'EOT'
pi = $(echo | awk '{print atan2(0, -1)}')
EOT
pi = $(echo | awk '{print atan2(0, -1)}')

終了する際の文字列はクォートしないことに注意します。

これを利用することでヒアドキュメントでシェルスクリプトが作りやすくなると思います。

$ cat << 'EOT' > pi.sh
#!/bin/bash

PI=$(echo | awk '{print atan2(0, -1)}')
echo pi = ${PI}
EOT
$ chmod 755 pi.sh
$ ./pi.sh
pi = 3.14159

参考

https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html#lbBO