Bash"booleans"默认为true?

apo*_*ere 1 bash boolean

我正在搞乱bash true/false,我注意到一些非标准的东西:

$ if $varible_i_have_never_set_before; then echo yes; fi
yes
Run Code Online (Sandbox Code Playgroud)

Bash空变量似乎评估为true.通常,未初始​​化的布尔值本质上是错误的,至少在大多数现代编程语言中是这样.对此有一个很好的解释吗?有没有办法获得所需的功能,缺少字符串比较?

Ign*_*ams 5

你误解了什么if.它不检查参数的内容,它检查命令返回值.由于变量中没有值,因此不运行任何内容.并且,看起来很奇怪,没有任何运行的返回值为0,这if认为是真的.