一、Test
测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值
格式:test 条件表达式 或 [ 条件表达式 ] (条件表达式的两边都需要空格,且此方法更为常用)
文件测试
常用选项
常见的测试操作符 含义
-d 测试是否为目录(directory)
-e 测试目录或文件是否存在(Exist)
-f 测试是否为文件(File)
-r 测试当前用户是否有权限读取(Read)
-w 测试当前用户是否有权限写入(Write)
-x 测试当前用户是否有权限执行(eXcute)
-L 测试是否为软连接文件
-nt 判断文件A是否比文件B新
-ot 判断文件A是否比文件B旧
-ef 判断两个文件是否为同一文件
例1
![](https://img-blog.csdnimg.cn/img_convert/dd7a9cb7097a572ed3bdc2a44e9a878b.png)
例2
![](https://img-blog.csdnimg.cn/img_convert/fea9bbec6a9935d9f5b6db963506b708.png)
例3:可以使用 && 和 echo 一起使用
![](https://img-blog.csdnimg.cn/img_convert/86428a13e92a67b4ac56536bd17c05e3.png)
例5:比较两个文件
![](https://img-blog.csdnimg.cn/img_convert/85350c3a789523d81c102859bdc17cff.png)
整数值比较
格式:[ 整数1 操作符 整数2 ]
常见测试操作符
操作符 含义
-eq 等于(Equal)
-ne 不等于(Not Equal)
-lt 小于(Leser Than)
-gt 大于(Greater Than)
-le 小于或等于(Lesser or Equal)
-ge 大于或等于(Greater or Equal)
例1:查询当前目录下的文件数是否大于10,如果大于,则进行提示
![](https://img-blog.csdnimg.cn/img_convert/f43e59f47a4fd5438c9ac04a25be9775.png)
例2:查看系统内存是否低于1024M,如果低于则提示
![](https://img-blog.csdnimg.cn/img_convert/7447ba48287a8188a648835a2d4ce38e.png)
字符串比较
格式:[ 字符串1 = 字符串2 ] //判断是否相等
[ 字符串1 != 字符串2 ] //判断是否不等
[ -z 字符串 ] //判断字符串内容是否为空
操作符
操作符 含义
= 字符串内容相同
!= 字符串内容不同,!号表示相反的意思
-z 字符串内容为空
例1:判断当前系统语言环境是否为“us.en”,如果不是则提示
![](https://img-blog.csdnimg.cn/img_convert/a2e4f5fead5eea886e0ec533f704801a.png)
逻辑测试
格式:[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
操作符
-a 或 && 逻辑与,而且的意思
-o 或 ▕▕ 逻辑或,或者的意思
! 逻辑否
二、if
单分支结构
如果只有一个判断式要进行,那么我们可以使用单分支的if语句 ,只有在条件成立时才会执行,否则不执行任何操作
格式:
if [ 条件判断语句 ]
then
echo “当前条件成立时,执行一条或多条命令”
fi
双分子结构
在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了
格式:
if [ 条件判断式 ]
then
echo “当条件判断成立时,可以执行一条或多条命令”
else
echo “当条件判断不成立时,可以执行一条或多条命令”
fi
多分支结构
如果数据需要进行多种不同的判断,则可以使用多分支结构 嵌套使用
格式:
if [ 条件判断式 ]
then
echo “当条件判断成立时,可以执行一条或多条命令”
elif [ 条件判断式二 ]
then
echo “当条件判断式成立时,可以执行一条或多条命令”
else
当上面的条件判断都不成立时,可以执行一条或多条命令
fi
![](https://img-blog.csdnimg.cn/img_convert/0c9dc6b0feaab2f3d9c0fae0c3cf2e97.png)
三、case
格式:
case 变量名称 in
模式1)
命令序列
;;
模式2)
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其它程序执行段
默认程序段
;;
esac
case行首必须以单词 “in”,每一模式必须以单个右括号")"结束
双分号 ";;" 表示命令序列的结束
模式字符串中,可以用方括号表示一个连续的范围,如 "[0-9]";还可以使用竖杠 | 表示或,比如a|b
最后的 ) 表示默认模式,其中的相当于通配符
例:不管输入大小写字母,都能输出yes或者no
![](https://img-blog.csdnimg.cn/img_convert/b70092d9d79428d129454de39fcd7736.png)