我试图理解一些 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" ]]