【shell】shell脚本报错:"[: =: unary operator expected"

简书 · · 499 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 

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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自:简书

感谢作者:简书

查看原文:【shell】shell脚本报错:"[: =: unary operator expected"

499 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传