shell之条件测试语句

shell之条件测试语句

一、test命令或[]中括号判断

1、test命令

test的语法
test 条件表达式 [条件表达式]
test 选项 文件
选项 作用
-d 判断是否是目录
-f 判断是否是普通文件
-b 判断是否是块设备
-c 判断是否是字符设备
-e 判断是否存在
-a 判断是否存在
-r 判断是否有读的权限
-w 判断是否有写的权限
-x 判断是否有执行的权限

例子:

image-20240513171030016

2、[]中括号

image-20240514135046772

2.1 整数值比较[]

选项 意义
-eq 表示等于
-ne 不是不等于
-gt 表示大于
-ge 表示大于等于
-lt 表示小于
-le 表示小于等于

2.2 实例操作

2.2.1 查看系统内存是否超出预定值

image-20240514142045883

2.2.2 比较两个数的大小

image-20240514143724467

2.3 字符串比较

选项 作用
= 表示字符串相同
!= 表示字符串内容不相同
-z 表示字符串内容为空
-n 表示字符串存在
2.3.1 案例:判断字符串是否相同

image-20240514150349236

2.3.2 案例:判断字符串是否为空

image-20240514145940271

2.4 逻辑测试(短路运算)

选项 作用
-a或&& 逻辑与,“而且”的意思
-o或|| 逻辑或,“或者”的意思
! 逻辑否

合并用法:只需要记住一个

cmd1&&cmd2||cmd3:表示cmd1正确执行cmd2,如果cmd1错误就执行cmd3

image-20240514152554349

2.5 双中括号(支持正则表达式和通配符)

[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
 注意:此表达式用于[[ ]]中,PATTERN为通配符
 	
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
 注意: 此表达式用于[[  ]]中;扩展的正则表达式

image-20240515160850395

image-20240515161231147

二、if语句

1 、单分支结构

if [判断]
then
命令序列
fi

2 、双分支结构

if [判断]
then
命令序列1
else
命令序列2
fi

3、 多分支结构

if[判断1]
then
命令序列1
elif[判断2]
then
命令序列2
elif[判断3]
then
命令序列3
.....(可以有多个)
else
命令序列4
fi

三、case语句的结构

case 变量 in
条件1)
命令序列1
;;
条件2)
命令序列2
;;
......
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac 

1、实例

image-20240514172025641

posted @ 2024-06-30 23:12  傲世九天  阅读(20)  评论(0)    收藏  举报