Linux

在多行註釋中引用變數時出現 Bash ‘unbound variable’ 錯誤(set -u)

  • November 24, 2017

我有一個意外的行為 - 以下程式碼段因“未綁定變數”錯誤而失敗:

#!/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

引用自:https://unix.stackexchange.com/questions/406851