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" ] 什么意思
表示字符串x${_ef_submit_jobmanager}和字符串x相等,x${var}就是x和${var}拼接起来
参考
Linux 中 if [ "x${var}" = "x" ] 什么意思?
https://zhidao.baidu.com/question/510807608.html
Linux shell tips
https://www.jianshu.com/p/2ebc99df7fe1
作者:Bogon
链接:https://www.jianshu.com/p/b0e3c9213a7d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。