首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >zsh:未定义变量时引发错误

zsh:未定义变量时引发错误
EN

Stack Overflow用户
提问于 2016-01-05 11:53:33
回答 1查看 1.3K关注 0票数 1

zsh (或者通常使用shell脚本)的一个不好的方面是,如果您输入了一个变量名,而由此产生的名称不存在,那么它将被静默地视为空字符串,这使得很难找到bug:

代码语言:javascript
运行
复制
if somecondition
then
  myvar=55
else
  my_var=66
fi
echo $MyVar # Oops

我知道这个规则的存在是为了与好的旧伯恩外壳兼容。我还知道,在访问变量时,我可以显式地捕获此错误:

代码语言:javascript
运行
复制
echo ${MyVar?NOT SET}

但是,如果我在每个变量访问中都这样做,就会产生丑陋的代码。由于我习惯于显式地初始化所有变量,所以当访问未设置的shell变量或环境变量时,zsh会自动发出错误消息。有办法这样做吗?我已经查过了zshoptions手册页,但没有找到合适的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-03 04:03:35

不仅在zsh中,而且在其他shell中,set -u使对未设置变量的引用成为一个错误。

也就是说,当使用此选项时,许多脚本将无法不修改地工作:不能再使用[[ $foo ]]来检查foo是否由外部环境提供,而是需要[[ ${foo-} ]]

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34611118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档