shell 比较判断

引用自:

http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/comparison-ops.html

 

 

Shell代码   收藏代码
  1. #! /bin/sh  
  2. var1=20  
  3. var2=21  
  4. if [ $var1 -ne $var2 ];then  
  5.   echo "1. -ne means NOT equal true"  
  6. fi  
  7.   
  8. xyz="11"  
  9. if [ -n "$xyz" ];then  
  10.   echo "2. -n means init true(MUST to use \"\")"  
  11. fi  
  12.   
  13. if [ -z "$1" ];then  
  14.   echo "3. -z means NOT command-line arguments true"  
  15. fi  
  16.   
  17. file="/etc/mtab"  
  18. if [ -e $file ];then  
  19.   echo "4. -e means file exists true"  
  20. fi  
  21.   
  22. home="/root"  
  23. if [ -d $home ];then  
  24.   echo "5. -d means dir exists true"  
  25. fi  
  26.   
  27. "true" ] && [ "false" ] && [ 0 ] && [ 1 ] && [ -1 ] && echo "6. string and integer means true"  
 

 

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

整数比较

-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" <= "$b"))

>

大于(在双括号中使用)

(("$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, 甚至是在条件测试中括号(参见例子 7-6)中只使用未引用的字符串的话, 一般也是可以工作的, 然而, 这是一种不安全的习惯. 习惯于使用引用的测试字符串才是正路.


转载于:https://www.cnblogs.com/yuzaipiaofei/archive/2012/03/04/4124251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值