以下 bash 脚本:
#!/bin/bash
TEST_VAR=""
if [[ -z $TEST_VAR ]] then
echo "empty"
else
echo "$TEST_VAR"
fi
尽管“then”之前缺少一个分号,但在 bash 5.2 中不会引发错误并成功完成,甚至返回0
。
在运行 bash 5.1 或 5.0 的系统上运行上述脚本会按预期失败。
这是为什么?bash 在 5.2 版中更改了解析器吗?搜索后,我找不到任何关于此更改的参考资料。bash 是否故意在此处更改了行为,或者这是一个错误?