Open4
Bash のヒアドキュメントで変数などの展開を回避する
よく忘れるのでメモ。
やりがちな例
cat << EOF > /path/to/file.txt
ABC
$DEF
EOF
これは $DEF
が変数として展開されてしまう(展開したいときもあるのでこれはこれで便利だけど)。
回避方法
cat << 'EOF' > /path/to/file.txt
ABC
$DEF
EOF
なお、'EOF'
にしなくとも shellcheck
から警告されない(よろしくない書き方でもないので)。
Copilot
for CLI の場合は下記のようなクエリーで教えてくれる。
───────────────────── Query ─────────────────────
1) bashで複数行のテキストを表示 2) 行に"$"が含まれる場合
──────────────────── Command ────────────────────
cat << 'EOF'
1
2
3
EOF
────────────────── Explanation ──────────────────
○ cat << 'EOF' is used to print a multi-line string.
◆ EOF is the delimiter that marks the beginning and end of the string.
❯ ✅ Run this command
Revise query
❌ Cancel
VSCode でスクリプトを編集しているときの for CLI ではない方の Copilot で 'EOF'
を引き出す方法は不明。