Bash 比较操作符

转自:高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍 备忘用

二元比较操作符用来比较两个变量或数字. 注意整数比较与字符串比较的区别.

整数比较

-eq

等于

if [ “$a” -eq “$b” ]

-ne

不等于

if [ “$a” -ne “$b” ]

-gt

大于

if [ “$a” -gt “$b” ]

-ge

大于等于

if [ “$a” -ge “$b” ]

-lt

小于

if [ “$a” -lt “$b” ]

-le

小于等于

if [ “$a” -le “$b” ]

<

小于(在双括号中使用)

((“$a” < “$b”))

小于等于(在双括号中使用)

((“$a”>

大于(在双括号中使用)

((“$a” > “$b”))

=

大于等于(在双括号中使用)

((“$a” >= “$b”))

字符串比较

=

等于

if [ “$a” = “$b” ]

==

等于

if [ “$a” == “$b” ]

与=等价.

Note

==比较操作符在双中括号对和单中括号对中的行为是不同的.

1 [[ $a == z* ]] # 如果$a以”z”开头(模式匹配)那么结果将为真

2 [[ $a == “z*” ]] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真.

3

4 [ $a == z* ] # 文件扩展匹配(file globbing)和单词分割有效.

5 [ “$a” == “z*” ] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真.

6

7 # 感谢, Stephane Chazelas

!=

不等号

if [ “$a” != “$b” ]

这个操作符将在[[ … ]]结构中使用模式匹配.

<

小于, 按照ASCII字符进行排序

if [[ “$a” < “$b” ]]

if [ “$a” < “$b” ]

注意”>

大于, 按照ASCII字符进行排序

if [[ “$a” > “$b” ]]

if [ “$a” > “$b” ]

注意”>”使用在[ ]结构中的时候需要被转义.

参考例子 26-11, 这个例子展示了如何使用这个比较操作符.

-z

字符串为”null”, 意思就是字符串长度为零

-n

字符串不为”null”.

Caution

当-n使用在中括号中进行条件测试的时候, 必须要把字符串用双引号引用起来. 如果采用了未引用的字符串来使用! -z, 甚至是在条件测试中括号中只使用未引用的字符串的话, 一般也是可以工作的, 然而, 这是一种不安全的习惯. 习惯于使用引用的测试字符串才是正路.

孤独的北山羊 /
Published under (CC) BY-NC-SA in categories GNU/Linux  tagged with bash  shell  比较