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

在多行注释中引用变量时,Bash“未绑定变量”错误(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

答案1

如果尝试set -u使用未定义的变量(set内置命令)。

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

set -u
<<'EOF'
a=a
b=$a
EOF

相关内容