首页 > linux > shell 条件测试及字符串比较操作符
2009六月22

shell 条件测试及字符串比较操作符

我说过,退出状态是if结构可以测试的唯一内容。呃,好吧,我承认这最初不是我说的,但是这并不影响其准确性~(不要扔砖头)

但是这并不意味着你只能以此检查命令是否运行正常,shell提供了[...]的结构可以测试各种条件的方式。

你也许听过test吧?其实内置的test就等同与[...]

例如,测试两个字符串是否相等,你既可以用test string1 = string2(没错,是一个等号),也可以用[ string1 = string2 ]

神奇吧?呵呵。。


[#condition#]实际上与其他语句一样,唯一不同的是它返回一个退出状态,给出condition是否为真的信息(”["符号后和“]”符号前的空格是必须的——这个必须有)。因而其也会适应if语法哦。

方括号将包含各种类型操作符的表达式阔气来。下面将列出字符串比较操作符

操作符 如果为真
str1 = str2 str1 匹配str2
str1 != str2 str1 不匹配str2
str1 < str2 str1 小于str2
str1 > str2 str1 大于str2
-n str1 str1 长度大于0 非null(空)
-z str1 str1 为null(空)


记住哦,这里是没有“大于等于”及“小于等于”的

这里字符串比较是按照ASCII字母顺序下来比较的

在"[....]“条件里面的“>”,”<"是需要转义的

使用-n在[]结构中测试必须要用""把变量引起来,形如:[ -n "$str1" ]

如下脚本,命名为bigger.sh

/bin/sh
str1=$1
str2=$2

if [ $str1 \> $str2 ]; then
echo "str1 is bigger than str2"
else
echo "str1 not bigger than str2"
fi
shell_str_bigger

shell_str_bigger

看代码,顺便说一下,分号是shell的标准语句分隔符——注意看if后面then的前面。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/22/925/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

2 Responses to “shell 条件测试及字符串比较操作符”

  1. #1 粥小卜 回复 | 引用 Post:2009-06-23 21:40

    :arrow: 看不懂 纯粹的支持下 :)

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-06-23 21:47

    @粥小卜
    呵呵,谢谢支持。。

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)