Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Windows98/ME > shell脚本报错:"[: =: unary operator expected"
【标  题】:shell脚本报错:"[: =: unary operator expected"
【关键字】:shell,unary,operator,expected
【来  源】:http://www.cublog.cn/u/18527/showart.php?id=113621

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

Your Ad Here
在匹配字符串相等时,我用了类似这样的语句:
 
if [ $STATUS = "OK" ]; then
     echo "OK"
fi
 
在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因。把语句改成这样就不会出错了:
 
if [{ $STATUS = "OK" }]; then
     echo "OK"
fi
 
究其原因,是因为如果变量STATUS值为空,那么就成了 [ = "OK"] ,显然 [ 和 "OK" 不相等并且缺少了 [ 符号,所以报了这样的错误。当然不总是出错,如果变量STATUS值不为空,程序就正常了,所以这样的错误还是很隐蔽的。或者用下面的方法也能避免这种错误:
 
if [ "$STATUS"x = "OK"x }; then
     echo "OK"
fi
 
当然,x也可以是其他字符。
顺便提一点,shell中有没有双引号在很多情况下是一致的。
查找目标字符:【上一篇】
/dev/null是特殊设备文件:【下一篇】
【相关文章】
  • shell学习
  • 列目录树的SHELL脚本
  • shell脚本中执行另一个shell脚本
  • Unix,linux shell 十三問
  • 面向 DBA 的 Linux Shell 脚本简介
  • [原创]VB里SHELL函数的使用示例
  • 1.认识和使用shell-<跟我学shell>
  • shell 中的for循环
  • 老大寫得看dbspaces的shell
  • eshell 里面过滤颜色控制符
  • 【随机文章】
  • 超级好用的LINUX脚本(没有测试过,但可以参考)
  • 上个月好忙啊,切实体验了一把项目管理,挺充实的
  • 12.3.3.13 Try-catch statements
  • 高性能网络编程MailList 热点回顾
  • 近来越来越多的朋友开始弄RADIUS
  • 创建和使用约束
  • Microsoft Access秘密、技巧和陷阱
  • Linux简明系统维护手册(一)
  • S110线缆管理器
  • 动态绑定GridView
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.