Shell脚本条件测试

一,条件测试

1.1 文件测试与整数测试

1.1.1 test 命令

测试表达式是否成立,若成立,则返回0,否则返回其他数值(返回值使用 echo $? 查看)

格式1: test 条件表达式

格式2: [ 条件表达式 ] *#条件表达式与中括号两边至少各有一个空格
在这里插入图片描述

1.1.2 文件测试

[ 操作符 文件或目录 ]
注意: 中括号两边要有空格

文件运算符释义示例
-e filename如果filename 存在,则为真 [ -e /etc/passwd ]
-f filename如果filename 存在,且为目录,则为真[ -d /opt ]
-d filename如果filename 存在 ,且为文件,则为真[ -f /etc/passwd ]
-L filename如果fiename 存在,且为软连接,则为真[ -L /bin ]
-r filename如果filename存在,且当前用户可读,则为真[ -r /etc/passwd ]
-w filename如果filename存在,且当前用户可写,则为真[ -w /etc/passwd ]
-x filename如果filename 存在,且当前用户可执行,则为真[ -x /usr/bin/umake ]
-s filename如果filename存在,且不为空文件,则为真[ -s /etc/passwd ]
-S filename如果filename 存在,且为空,则为真[ -S /etc/passwd ]
filename1 -nt filename2如果 filename 1 比 filename 2 新,则为真[ /etc/passwd -nt /etc/group ]
filename1 -ot filename2如果 filename1 比 filename2 旧, 则为真[ /etc/passwd -ot /etc/group ]

在这里插入图片描述
在这里插入图片描述

1.1.3整数值比较

【整数1 操作符 整数2】

测试符释义
-eq等于(Equal)
-ne不等于(Not Equal)
-gt大于(Greater Than)
-lt小于(Lesser Than)
-le小于或等于(Lesser or Equal)
-ge大于或等于(Greater or Equal)

一般,当使用单中括号"[]“时,使用文字比较符号
使用双中括号”[[ ]]“时,使用字符比较符号 如”>= ; > ; == ; <;<="
当在单中括号里使用字符比较符号时,需要在符号前面加上 转义符号 “”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 字符串测试与逻辑测试

1.2.1 字符串比较

格式1:
【 字符串1 = 字符串2】 #字符串一样为真
【 字符串1!=字符串2】 #字符串不一样为真

格式2:
【 -z 字符串】 #字符串为空,则为真
【 -n 字符串】 #字符串不为空,则为真

操作符释义
=测试字符串是否一样
!=测试字符串是否不一样,不一样为真
-z测试字符串是否为空,为空则为真
-n测试字符串是否不为空,不为空则为真

设两个变量:
a=abc
b=123
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意区分输入法

1.2.2逻辑测试

格式:
【表达式1】 操作符 【表达式2】……
或:
【命令1】 操作符 【命令2】

操作符释义
-a 或者 &&逻辑与,“而且”的意思
-o 或者 ll逻辑或,“或者” 的意思
逻辑否(逻辑非)

在这里插入图片描述
在这里插入图片描述
-f判断a是不是文件,-r判断a是否可读,如果满足条件,则cat a
&&逻辑与:前面的条件都执行成功,才执行后面的条件

在这里插入图片描述
||,逻辑或,只要满足一个条件,则执行后面的语句

单中括号"[ ]“内,多个逻辑判断,使用 文字操作符 “-a” “-o”
两个中括号之间 “[ ] [ ]” 逻辑测试,使用字符操作符 " &&” “||”
双中括号之间"[[ ]]" 逻辑测试,使用字操作符 “&&”"||"

二,if语句

if  条件测试
  then   命令序列
fi

在这里插入图片描述
在这里插入图片描述
新建一个.sh脚本文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果不是直接结束语句(上图)

2.2 if多分支语句

if  条件判断
    then   命令序列1
    else   命令序列2
fi

与上面的就是多了一个不满足条件后可以输出
在这里插入图片描述
在这里插入图片描述

2.3 if多分支语句

if 条件测试
   then 命令序列1
elif  条件测试2
   then  命令序列2
elif  条件测试3
    then 命令序列3
  ......
else
   命令序列4
fi

在这里插入图片描述

在这里插入图片描述

三,case语句

case 可以用来判断一个变量的不同取值
格式:

case  $变量  in
值1)
	命令序列1 ;;2)
  命令序列2 ;;
*)
  命令序列3 ;;
esac

在这里插入图片描述
创建一个casetest.sh文件
在这里插入图片描述
在这里插入图片描述
三种运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值