在bash中检查空字符串

Let*_*_Be 5 linux bash

以下测试之间有什么区别吗?

[[ "$STRING" = "" ]] && exit 1;


[[ "x$STRING" = "x" ]] && exit 1;


[[ -z $STRING ]] && exit 1;
Run Code Online (Sandbox Code Playgroud)

Sod*_*ved 11

不,他们都是一样的.但是几个防守习惯才能进入.

  • 你要引用$STRING的-z一个,以及
  • 如果你使用-u选项运行(我总是这样做)那么你应该引用可能的可选变量,${STRING-}以防万一它根本没有设置