1、test命令
test 命令可以用于检查某个条件是否成立,它可以进行数值、字符、文件的测试。
1.1 数值判断
例如test num1 -eq num2可以判断num1和num2是否相等。
-eq | equal:判断num1和num2是否相等 |
-ne | not equal:判断num1和num2是否不相等 |
-gt | greater than:判断num1是否大于num2 |
-lt | less than:判断num1是否小于num2 |
-ge | greater than or equal:判断num1是否大于等于num2 |
-le | less than or equal:判断num1是否小于等于num2 |
1.2 字符判断
例如test -z str可以判断str是否为空字符串。
-z | 是否为空字符串?是则返回true |
-n | 是否为空字符串?不是则返回true |
str1 = str2 | str1是否等于str2?相等则返回true |
str1 != str2 | str1是否不等于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新。
-nt | new than:判断file1是否比file2新 |
-ot | old than:判断file1是否比file2旧 |
-ef | 判断file1是否和file2是同一文件 |
1.4 组合判断
-a | and, 例如 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脚本之旅会更久精彩!
===================================================================================
注意:本文为本人原创,版权所属为个人所有,欢迎转载,但是转载请注明出处。
===================================================================================