![bash 脚本中的 if [ "x/usr/bin" != "x" ] 是什么意思?](https://linux22.com/image/936745/bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%20if%20%5B%20%22x%2Fusr%2Fbin%22%20!%3D%20%22x%22%20%5D%20%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
我试图理解一些 bash 脚本序列,其中一个步骤有一个条件:
if [ "x/usr/bin" != "x" ]; then <do some actions>
以下是什么意思?
x
在x/usr/bin
x
在测试方程的右边?
答案1
这是一种众所周知的批判主义。
如果一个变量(比如$foo
在这个例子中)可能为空或者可能保存一个值,
如果foo=""
,那么
if [ "$foo" = "bar" ]
扩展为
if [ = "bar" ]
语法错误 :-(
如果使用
if [ "x$foo" = "xbar" ]
它扩展为
if [ "x" = "xbar" ]
没有语法错误。
有更好的方法来检查空变量,例如
if [[ -n "$foo" ]]