我有一個意外的行為 - 以下程式碼片段因“未綁定變數”錯誤而失敗:
#!/bin/bash
set -u
<<EOF
a=a
b=$a
EOF
測試版本:
GNU bash,版本 4.4.12(1)-release
GNU bash,版本 4.2.46(2)-release
答案1
如果嘗試set -u
使用未定義的變數(set
內建指令)。
<<
here-documents with的形式EOF
相當於雙引號內部的單字,以允許 shell 擴展變數(參數擴展)(bash
在本例中;也受命令替換和算術擴展影響)。為了避免發生擴展,請用單引號引用此處的字串
set -u
<<'EOF'
a=a
b=$a
EOF