Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1571711
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: 网络与安全

2013-03-21 14:23:08

整数比较
-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" ],与=等价
 
注意: [[]]和[]中的行为在某些情况下是不同的:
 
[[ $a == z* ]]           # 如果$a 以"z"开头(模式匹配)那么将为true
[[ $a == "z*" ]]         # 如果$a 等于z*  (字符匹配),那么结果为true
 
[ $a == z* ]             # File globbing 和word splitting 将会发生
[ "$a" == "z*" ]        # 如果$a 等于z* (字符匹配),那么结果为true
 
File globbing 是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是file globbing 并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
(笔者不太懂, 假如在/tmp目录下有一个a.txt文件,则[ "a.txt" = a.* ]会返回逻辑真,但如果/tmp下有a.txt和a.out两个文件,则这样写Shell会报错)
 
!= 不等于,如:if [ "$a" != "$b" ]
注意:!= 在[[]]结构中使用模式匹配.
 
< 小于,在ASCII 字母顺序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意:在[]结构中"<"需要被转义.
 
> 大于,在ASCII 字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]结构中">"需要被转义.
 
-z 字符串为空.就是长度为0.
-n 字符串不为空
注意: 对于字符串或数字的比较, 加上双引号("")是没有坏处的, 而且能避免一些不必要的麻烦(请参考,但模式和正则表达式不能加双引号.
 if [ -n $string ];出错

 
混合比较
-a 逻辑与
exp1 -a exp2     如果exp1 和exp2 都为true 的话,这个表达式将返回true
-o 逻辑或
exp1 -o exp2    如果exp1 和exp2 中有一个为true 的话,那么这个表达式就返回true
阅读(748) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~