shell脚本报错:"[: =: unary operator expected"
在匹配字符串相等时,我用了类似这样的语句:
if [ $STATUS == "OK" ]; then
echo "OK"
fi
究其原因,是因为如果变量STATUS值为空,那么就成了 [ = "OK"] ,显然 [ 和 "OK" 不相等并且缺少了 [ 符号,所以报了这样的错误。
当然不总是出错,如果变量STATUS值不为空,程序就正常了,所以这样的错误还是很隐蔽的。
可以用下面的方法避免这种错 误:
if [ "$STATUS"x == "OK"x ]; then
echo "OK"
fi
当然,x也可以是其他字符。

参考
Linux 中 if [ "x${var}" = "x" ] 什么意思?
https://zhidao.baidu.com/question/510807608.html
Linux shell tips
https://www.jianshu.com/p/2ebc99df7fe1
网友评论