您的位置:首页 > 运维架构 > Shell

关于shell中的字符串的比较与数值的比较

2012-12-15 14:50 267 查看

关于shell中的字符串的比较与数值的比较

二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别

1. 整数比较

(1)这个是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" ]

(2)也可以采用内嵌C的写法(但是所有内嵌C的写法都要加上"((
))")

< 小于(需要双括号),如:(("$a" < "$b"))

<= 小于等于(需要双括号),如:(("$a" <= "$b"))

> 大于(需要双括号),如:(("$a" > "$b"))

>= 大于等于(需要双括号),如:(("$a" >= "$b"))

2.字符串比较

= 等于,如:if [ "$a" = "$b" ]

== 等于,如:if [ "$a" == "$b" ],与=等价

注意:==的功能在[[]]和[]中的行为是不同的,如下:

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

2. [[ $a == "z*" ]] #如果$a等于z*(字符匹配) , 那么将为true

!= 不等于,如:if [ "$a" != "$b" ] 这个操作符将在[[ ]] 中使用模式匹配

< 小于,在ASCII字母顺序下,如:
if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]],注意:在[ ]结构中“<”需要被转义
> 大于,在ASCII字母顺序下,如:

如上

-z 字符串为“null”,就是长度为0

-n 字符串不是"null"

注意: 在使用 -n 在[ ] 结构中测试必须要用“把变量引起来,使用一个未被”的字符串来使用!-z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: