【问题标题】:Bash - force error if variable not defined [duplicate]Bash - 如果变量未定义,则强制错误[重复]
【发布时间】:2015-02-05 03:00:57
【问题描述】:

我使用许多使用 bash 变量的 shell 脚本。因此,例如,我可能有这样的脚本:

option1="-blah_blah"
option2="-yada_yada"
option3="-whatever"
...
option99="-something_else"

./myCommand "$option1 $option12 $option97 $option45"

我一直在编辑最后一个命令来运行各种工程测试。问题是,有时我拼错了一个变量。在这种情况下,Bash 只是简单地替换了一个空字符串,而我的命令会默默地做错事。

当我尝试使用未定义的变量时,有没有办法让 Bash 抛出异常?

【问题讨论】:

  • 不确定这怎么可能是那个问题的重复,因为如果我拼错了一个变量,它仍然无法防止错误。

标签: bash


【解决方案1】:

用途:

set -e # 出错时停止。我不敢相信这不是默认值。

set -u # 如果尝试使用未初始化的变量,则停止。

【讨论】:

  • set -e 并没有你想的那么有用,并且可能会以“有趣”的方式闯入,所以不能像你想要的那样为你节省很多(有时主动不是你想要的) . set -u 同样有点烦人,而且并不总是像你想要的那样有用(有时比你想要的更严格)。仅作记录。
  • 阅读BashFAQ #105,您将非常清楚为什么set -e 不是默认值(除了“将其设为默认值会破坏POSIX sh 兼容性”,这已经足够了)。
猜你喜欢
  • 1970-01-01
  • 2014-10-09
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多