我有一个意外的行为 - 以下代码片段因“未绑定变量”错误而失败:
#!/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