Chinaunix首页 | 论坛 | 博客
  • 博客访问: 362979
  • 博文数量: 94
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 823
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 16:49
文章分类

全部博文(94)

文章存档

2015年(1)

2011年(1)

2010年(3)

2008年(8)

2007年(55)

2006年(26)

我的朋友

分类:

2006-05-16 22:27:20

在匹配字符串相等时,我用了类似这样的语句:
 
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中有没有双引号在很多情况下是一致的。
或者这样也行:
 
if [ "$STATUS" = "OK" }; then
     echo "OK"
fi
 
阅读(715) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~