if-then语句不能测试命令退出状态码以外的条件,test命令提供了在if-then语句中测试不一样条件的途径。shell
格式:express
1 test condition
condition是test命令要测试的一系列参数和值。当用在if-then语句中时,test命令以下两种表示方法:bash
第一种:测试
1 if test condition 2 then
3 command 4 fi
第二种:spa
1 if [condition] 2 then 3 command 4 fi
参数 | 说明 |
---|---|
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
可是涉及到浮点值时,数值条件测试会有一个限制。bash shell只能处理整数。命令行
参数 | 说明 |
---|---|
= | 等于则为真 |
!= | 不相等则为真 |
-z 字符串 | 字符串的长度为零则为真 |
-n 字符串 | 字符串的长度不为零则为真 |
< | 检查前面的字符串是否比后面的小 |
> | 检查前面的字符串是否比后面的大 |
字符串相等性:3d
在比较两个字符串的相等性时,比较测试会将全部的标点和大小写状况都考虑在内。code
字符串顺序: htm
注意问题:
参数 | 说明 |
---|---|
-e 文件名 | 若是文件存在则为真 |
-r 文件名 | 若是文件存在且可读则为真 |
-w 文件名 | 若是文件存在且可写则为真 |
-x 文件名 | 若是文件存在且可执行则为真 |
-s 文件名 | 若是文件存在且至少有一个字符则为真 |
-d 文件名 | 若是文件存在且为目录则为真 |
-f 文件名 | 若是文件存在且为普通文件则为真 |
-c 文件名 | 若是文件存在且为字符型特殊文件则为真 |
-b 文件名 | 若是文件存在且为块特殊文件则为真 |
file1 -nt file2 | 检查file1是否比file2新 |
file1 -ot file2 | 检查file1是否比file2旧 |
举例1:
上面代码使用了-d测试条件来检查用户的$HOME目录是否存在。若是它存在的话,它将继续使用cd命令来切到$HOME目录并进行显示目录下的文件。
举例2:
-e比较容许你在脚本中使用对象前检查文件或目录对象是否存在,而后上面代码表示若不存在建立一个新文件testing
举例3:
-e比较适用于文件和目录。但要肯定指定的对象是个文件,必须用-f比较
if-then语句容许使用布尔逻辑来组合测试。有两种布尔运算符可用:
if-then语句容许使用布尔逻辑来组合测试。有两种布尔运算符可用:
以上解释以下,若是var一、var2同时知足大于15,输出$$;若是var一、var2有一个知足大于15,输出||;不然输出not
双括号的命令格式以下:
1 ((expression))
expression能够是任意的数学赋值或比较表达式。
双方括号的命令格式以下:
1 [[expression]]
expression使用了test命令中采用的标准字符串比较。