bash下字符串运算符及示例

http://saphires.spaces.live.com/blog/cns!408d802a2ec73923!206.entry

bash下字符串运算符及示例

本文主要描述bash下字符串运算符,给出简单的示例,并提出几个值得注意的地方。
 
下面是bash支持的字符串运算符:
 
=  相等
!= 不等
-n 非空字符串
-z 空字符串
> 大于
< 小于
 
前面四个经常用,相信大家都很熟悉。不过下面还是分别给出示例,以及一些需要注意的地方。
 
1. 相等及不等比较
a="Robert"
b="Simon"
 
if [ $a = $b ]
then
    echo "Equals"
fi
 
上面这样写行吗?行!大多数情况都行。但是如果b=""的时候还行吗?想想看。。。为什么??
 
所以,一般我们做字符串比较的时候,请一定要在变量两端加上双引号,象下面这样写才是好的习惯:
if [ "$a" = "$b" ]
then
    echo "Equals"
fi
if [ "$a" != "Robert" ]
then
    echo "Not equals"
fi
 
2. 非空及空字符比较
 
if [ -z $a ]
then
    echo "Empty String"
fi
上面这样好吗?。。。这下你就不会上当了吧。。。哈哈,应该象下面这样写。
if [ -z "$a" ]
then
    echo "Empty String"
fi
 
非空判断是一样的:
if [ -n "$a" ]
then
    echo "Non-empty String"
fi
 
3. 字符串大小的比较
关于这个,我用了五年的shell,居然今天一个同事问到我这个怎么搞的时候不知道怎么搞-_-真是晕菜。差点就告诉他bash不能搞这个了,还好没有丢人后来翻书翻出来了。
网上实现这个的五花八门,有用sort做的,有用其它awk一类的做的,最NB的用C来做。其实关于这个,bash有内置的字符串比较操作符,大可不必麻烦各位去用这么多门路来实现。
 
if [[ "$a" > "$b" ]]
then
    echo "$a is greater than $b"
fi
 
if [[ "$a" < "$b" ]]
then
    echo "$a is smaller than $b"
fi
 
注意的就是要加两个方括号,还有就是字符串变量加上双引号(我第三次提醒大家),其它的没有了。:)
posted @ 2008-01-06 23:11  jambol  阅读(4674)  评论(0编辑  收藏  举报