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
注意的就是要加两个方括号,还有就是字符串变量加上双引号(我第三次提醒大家),其它的没有了。:)