Bootstrap

跟我一起写Shell脚本之七---条件判断(1 判断)

1、test命令

test 命令可以用于检查某个条件是否成立,它可以进行数值、字符、文件的测试。

1.1 数值判断

例如test num1 -eq num2可以判断num1和num2是否相等。

-eqequal:判断num1和num2是否相等
-nenot equal:判断num1和num2是否不相等
-gtgreater than:判断num1是否大于num2
-ltless than:判断num1是否小于num2
-gegreater than or equal:判断num1是否大于等于num2
-leless than or equal:判断num1是否小于等于num2

1.2 字符判断

例如test -z str可以判断str是否为空字符串。

-z是否为空字符串?是则返回true
-n是否为空字符串?不是则返回true
str1 = str2str1是否等于str2?相等则返回true
str1 != str2str1是否不等于str2?不相等则返回true

 

1.3 文件判断

文件判断又分为文件类型判断、文件权限判断、文件比较。

1.3.1 文件类型判

例如test -f filename可以判断是否存在且为文件。

-e是否存在
-f是否存在,且为文件
-d是否存在,且为目录
-b是否存在,且为块设备
-c是否存在,且为字符设备
-S是否存在,且为Socket文件
-p是否存在,且为FIFO(pipe)文件
-L是否存在,且为链接文件

1.3.2 文件权限判断

例如test -x filename可以判断是否有执行权限。

-r是否存在,且为可读的
-w是否存在,且为可写的
-x是否存在,且为可执行的
-u是否存在,且有[SUID]属性
-g是否存在,且有[SGID]属性
-k是否存在,且有[Sticky bit]属性
-s是否存在,且为空白文件

1.3.3 文件比较

例如test file1 -nt file2可以判断file1是否比file2新。

-ntnew than:判断file1是否比file2新
-otold than:判断file1是否比file2旧
-ef判断file1是否和file2是同一文件

 

1.4 组合判断

-aand, 例如 test -x file1 -a -w file1
-o

or, 例如 test -x file1 -o -w file1

!取反,如 test ! -w file
&&and, 例如 [ test -x file1 ] && [ -w file1 ]
||or, 例如 [ test -x file1 ] || [ -w file1 ]

2、[]符号

例如[ test -x file1 -a -w file1 ],或者 [ "$AAA" == "$BBB" ]

注意:

1) 每一部分都要有空格,包括括号进去后,和出来前都要有空格

2)括号内的变量,最好都用双引号括起来

3)括号内的常量,最好都用单引号或者双引号括起来

 

好了,今天的部分就到这里了,接下来的Shell脚本之旅会更久精彩!

===================================================================================

注意:本文为本人原创,版权所属为个人所有,欢迎转载,但是转载请注明出处。

===================================================================================

;