bash 脚本中的 if [ "x/usr/bin" != "x" ] 是什么意思?

bash 脚本中的 if [ "x/usr/bin" != "x" ] 是什么意思?

我试图理解一些 bash 脚本序列,其中一个步骤有一个条件:

if [ "x/usr/bin" != "x" ]; then <do some actions>

以下是什么意思?

  • xx/usr/bin
  • x在测试方程的右边?

答案1

这是一种众所周知的批判主义。

如果一个变量(比如$foo在这个例子中)可能为空或者可能保存一个值,

如果foo="",那么

 if [ "$foo" = "bar" ]

扩展为

if [ = "bar" ]

语法错误 :-(

如果使用

if [ "x$foo" = "xbar" ] 

它扩展为

if [ "x" = "xbar" ]

没有语法错误。

有更好的方法来检查空变量,例如

if [[ -n "$foo" ]]

相关内容