Linux
在多行註釋中引用變數時出現 Bash ‘unbound variable’ 錯誤(set -u)
我有一個意外的行為 - 以下程式碼段因“未綁定變數”錯誤而失敗:
#!/bin/bash set -u <<EOF a=a b=$a EOF
測試於:
GNU bash,版本 4.4.12(1)-release
GNU bash,版本 4.2.46(2)-release
set -u
如果嘗試使用未定義的變數(內置命令),set
您所定義的是強制退出並顯示錯誤消息。here-documents
<<
with的形式EOF
等價於好像將裡面的單詞雙引號一樣,以允許shell對變數進行擴展(參數擴展)(bash
在這種情況下;也受命令替換和算術擴展)。為避免發生擴展,請用單引號引用此處的字元串set -u <<'EOF' a=a b=$a EOF