在多行注释中引用变量时出现 Bash“未绑定变量”错误(set -u)

pad*_*ura 6 linux bash error-handling here-document variable

我有一个意外的行为 - 以下代码段因“未绑定变量”错误而失败:

#!/bin/bash
set -u
<<EOF
a=a
b=$a
EOF
Run Code Online (Sandbox Code Playgroud)

测试:
GNU bash,版本 4.4.12(1)-release
GNU bash,版本 4.2.46(2)-release

Ini*_*ian 11

你有什么用定义set -u是强制退出一个错误信息,如果试图使用未定义的变量(set内置命令)。

here-document <<with的形式EOF相当于好像双引号里面的词,以允许 shell 扩展(参数扩展)变量(bash在这种情况下;也受命令替换和算术扩展的影响)。为了避免发生扩展,用单引号引用此处的字符串

set -u
<<'EOF'
a=a
b=$a
EOF
Run Code Online (Sandbox Code Playgroud)