shell编程之条件语句

条件测试

test命令

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0 ( 真true)时表示成功,返回值为非0值(假false)时表示失败或异常。
测试表达式是否成立,若成立返回0,否则返回其他数值

格式1: test 条件表达式

格式2: [ 条件表达式 ]
方括号“["或"]”与条件表达式之间需要至少一个空格进行分隔

文件测试

[ 操作符 文件或目录 ]

常用的测试操作符说明
-d测试是否为目录(Directory)
-e测试目录或文件是否存在( Exist)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)
-L测试是否为软连接文件

注: -d 和 -f都拥有-e的条件

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

整数值比较

[ 整数1 操作符 整数2 ]

常用的测试操作符说明数字符
-eq等于(Equal)=
-ne不等于(Not Equal)!=
-gt大于(Greater Than)>
-lt小于(Lesser Than)<
-le小于或等于(Lesser or Equal)<=
-ge大于或等于(Greater or Equal)>=

在这里插入图片描述

字符串比较

格式1
[ 字符串1   =   字符串2 ]
[ 字符串1  !=   字符串2 ]

格式2
[ -z   字符串]
[ -n   字符串]
常用的测试操作符说明
=字符串内容相同
!=字符串内容不同,! 号表示相反的意思
-z字符串内容为空(Zero) ,对于未定义或赋予空值的变量将视为空串
-n检查是否有字符串存在

在这里插入图片描述

逻辑测试

格式1
 [  表达式1  ]  操作符 [  表达式2  ]

格式2
命令1   操作符    命令2
常用的操作符说明
-a或&&逻辑与,“而且"的意思,前后条件需都成立
-o或▕▕逻辑或,“或者"的意思,只需前后条件中一个成立
!逻辑否
a=5
[ $a -ne 1]  && [ $a != 2 ] 等同于 [ $a -ne 1 -a $a !=2 ]
#&&||操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错
[[ $a !=1 && $a != 2 ]]
[ 2 -lt 3 ] && echo true|echo false
[ 2 -ge 3 ] && echo true|echo false

在这里插入图片描述

vim ping. sh
#! /bin/bash
ping -c 3 -i 0.5 -W 2 $1 &> /dev/null && echo “$1 online” || echo “$1 offline”

-c:发送包的个数
-i:发送包的间隔时间
-W:超时时间
-w: 多少秒后停止ping 命令操作
在这里插入图片描述

在这里插入图片描述

if语句

if单分支

if单分支结构图

在这里插入图片描述

单分支if语句

if   条件测试操作
  then
    命令序列
fi

[1]
if [ 3 -gt 2 ]
  then 
echo "ok"
fi

[2]
if [ 3 -gt 2];  then echo "ok" ; fi

[3]
[ 3 -gt 2 ]  && echo "ok"

if双分支

if双分支结构图

在这里插入图片描述

双分支if语句

if   条件测试操作
   then  命令序列1
   else  命令序列2
fi

if多分支

if多分支结构图

在这里插入图片描述

多分支if语句

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

case多分支语句

case多分支结构图

在这里插入图片描述

多分支case语句

case 变量值 in
模式1)
命令序列1
;;

模式2)
命令序列2
;;

*)
默认命令序列
esac

case语句结构
1.关键字case后面跟的是“变量值”,即“$变量值”
2.模式1 、模式2、… 、* 对应变量的不同取值,
3.*为通配符,可匹配任意值。

case语句注意事项
1.case行首必须以单词“in”,每一模式必须以单个右括号")“结束
2.双分号”;“表示命令序列的结束
3.模式字符串中,可以用方括号表示一个连续的范围,如”[0-9]"; 还可以使用竖杠表示或,比如alb
4.最后的*)表示默认模式,其中的 * 相当于通配符

练习

1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
在这里插入图片描述
2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误

在这里插入图片描述
3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值