天天看点

shell条件判断式语句

条件判断式格式,有两种形式,

1. test 条件表达式(利用test命令来判断条件表达式)

2. [ 条件表达式 ] (将判断表达式用中括号括起来,注意条件表达式两边的空格不能省略)

这两种形式都能完成条件判断的功能,方便起见,我们一般使用中括号来对条件表达式进行判断。

能判断的种类有:

1. 文件类型: [ 选项 文件名 ]

选项有:

-e:文件存在(exist),返回真

-d:文件存在且为目录文件(directory),返回真

-f:文件存在且为普通文件(regular file),返回真

-b:文件存在且为块设备文件(block),返回真

-c:文件存在且为字符设备文件(char),返回真

-L:文件存在且为符号链接文件(symbolic link),返回真

-P:文件存在且为命令管道文件(named pipe),返回真

-s:文件存在且为内容为非空文件(这个参数很特殊,英文没发对应),返回真

-S:文件存在且为套接字文件(Socket),返回真

2. 文件权限:[ 选项 文件名 ]

选项有:

-r:文件存在且权限为只读,返回真

-w:文件存在且权限为只写,返回真

-x:文件存在且为可执行文件,返回真

-u:文件存在且有SUID权限,返回真

-g:文件存在且有SGID权限,返回真

-k:文件存在且有SBIT权限(sticky bit),返回真。SBIT(防删除)权限与只读权限(没有写权限)不同,防删除权限不允许用户删除文件但允许用户添加文件,而只读权限(没有写权限)不仅不允许用户删除文件,也不允许用户添加文件。

3. 文件之间进行比较:[ 文件1 选项 文件2 ]

选项有:

-nt:(newer than),文件1存在且文件1比文件2新(修改时间),返回真

-ot:(older than),文件1存在且文件1比文件2老(修改时间),返回真

-ef:文件1和文件2存在且拥有相同的inode号,返回真

4. 整数之间进行比较:[ 整数1 选项 整数2 ]

选项有:

-eq:(equal),整数1与整数2相等,返回真

-ne:(not equal),整数1与整数2不相等,返回真

-gt:(greater than),整数1比整数2大,返回真

-lt:(less than),整数1比整数2小,返回真

-ge:(greater than or equal),整数1大于或等于整数2,返回真

-le:(less than or equal),整数1小于或等于整数2,返回真

因为选项已经是数值比较,所以系统会自动将数字字符串转化为数值进行比较。

5. 字符串之间比较:[ 字符串1 选项 字符串2 ]

选项有:

-z:(zero),如果字符串长度为零,返回真

-n:(nonzero),如果字符串长度非零, 返回真

!=:字符串1与字符串2不相等,返回真

=:字符串1与字符串2相等,返回真(双等于号==有同样的判断效果)

<:根据字典序,字符串1小于字符串2,返回真

>:根据字典序,字符串1大于字符串2,返回真

6. 多重条件判断(逻辑运算): [ 表达式1 逻辑选项 表达式2 ]

逻辑选项有:

-a:表示逻辑且

-o:表示逻辑或

!:表示逻辑非

若有不对之处,敬请指正。