shell编程之条件语句

目录

引言:

一、条件测试

1、test命令

2、文件测试

2.1测试是否为文件

2.2测试目录或文件是否存在

2.3 测试是否为目录

2.4测试是否为设备文件

2.5测试 当前用户是否有权限执行

2.6test可用[]代替

3、整数值比较

 案例1:当系统登录用户超过5个时,提示:当前用户过多

案例 2:当系统磁盘剩余容量小于1024M时 进行报警

 4、字符串比较

5、逻辑测试

二、if语句的结构

1、单分支结构

2、双分支结构

2.1判断目标主机是否存活,存活就打印is up,如果不存活就打印is down

2.2判断输入的用户名是否存在,存在提示已存在,不存在则创建用户并设置密码

​ 2.3开启查询apache服务

 3、多分支结构

3.1需求:判断文件的类别

3.2罚抄案例

4、if嵌套语句

三、case语句的结构

1、case多分枝结构

2、case语句注意事项

3、case 语句的执行流程

4.案例

4.1 检查用户输入的字符类型

​4.2编写 apache 启动服务脚本

 4.3罚抄案例

五、总结

1.条件测试的语法

2.if条件语句的语法

3.case多分支语句的语法

引言:

本问介绍了if语句的部分知识点,通过一个简单的案例给大家介绍了if语句中的条件测试,包括检查是否相等、比较数字、检查多个条件的应用。

一、条件测试

1、test命令

测试表达式是否成立,若不成立返回0,否则返回其他数值

格式1:test 条件表达式
格式2:[ 条件表达式 ]

2、文件测试

[ 操作符 文件或目录 ]
常用操作符说明
-d测试是否为目录(Directory)
-e测试目录或文件是否存在(Exist)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)
-b测试是否为设备文件
-c测试是否为字符设备
-s测试存在且文件大小为空
-L测试是否为链接文件

 

案例:

2.1测试是否为文件

2.2测试目录或文件是否存在

2.3 测试是否为目录

2.4测试是否为设备文件

2.5测试 当前用户是否有权限执行

2.6test可用[]代替

3、整数值比较

[ 整数1 操作数 整数2 ]

 常用测试操作符

-eq:  等于       第一个数等于(Equal)第二个数。

-ne:  不等于     第一个数不等于(Not Equal)第二个数。

-gt:   大于      第一个数大于(Greater Than)第二个数。

-lt:   小于       第一个数小于(Lesser Than)第二个数。

-le:   小于等于   第一个数小于或等于(Lesser or Equal)第二个数。

-ge:   大于等于   第一个数大于或等于( Greater or Equal)第二个数

 案例1:当系统登录用户超过5个时,提示:当前用户过多

案例 2:当系统磁盘剩余容量小于1024M时 进行报警

 4、字符串比较

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

格式2 [ -z 字符串 ]
常用操作符说明
=字符串内容相同
!=字符串内容不同,!号表示相反的意思
-z字符串内容为空
-n检查是否有字符串存在

5、逻辑测试

格式一:【 表达式1 】 操作符 【 表达式2 】
格式二: 命令1 操作符 命令2
常用操作符说明
-a或&&逻辑与,而且的意思
-o或|||| 逻辑或,或者的意思
逻辑否

案例:

 &&、||操作符能够正常存在[[ ]]条件判断结构中,但是如果出现在一个[ ]结构中,就会报错

二、if语句的结构

1、单分支结构

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

判断挂载点目录,若不存在则自动创建

注意:

单个括号(【】):必须要有空格  两个字符或数字之间的比较左右必须有空格

条件判断: 
test一种形式,【】中间只能使用=和!=比较字符串,如果使用< 、>需要进行转义\.
然后中间如果比较数字要用-lt 等符号,不能使用 \< 比较数字,他会当成字符串处理

两个括号【【 】】 :可用于处理逻辑命令,也可以处理字符串是否相等,且使用< 、>不用转义符

2、双分支结构

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

2.1判断目标主机是否存活,存活就打印is up,如果不存活就打印is down

 

2.2判断输入的用户名是否存在,存在提示已存在,不存在则创建用户并设置密码

 2.3开启查询apache服务

 3、多分支结构

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

3.1需求:判断文件的类别

3.2罚抄案例

4、if嵌套语句

判断httpd服务有没有启动

 注意等号两边同为字符串必须有空格,可以将==换成-a,两边同为变量值时要引号不要空格。 

三、case语句的结构

case 语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写
case 语句主要适用于以下情况: 某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的 if 语句非常相似,只不过 if 语句需要判断多个 不同的条件,而 case 语句只是判断一个变量的不同取值。

1、case多分枝结构

case 变量值 in 
模式一)
   命令序列
;;
模式二)
   命令序列 
;;
……
*)
   默认命令序列
esac

2、case语句注意事项

①case行首必须以单词“in”,每一模式必须以单个右括号")"结束

②双分号";;"表示命令序列的结束

③模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]",还可以用竖杠符号 “|”表示或,如“A|B”。

最后的*)表示默认模式,其中的*相当于通配符

3、case 语句的执行流程

首先使用“变量值”与模式 1 进行比较,若取值相同则执行模式 1 后的命令序列,直到遇见双分号“;;”后跳转至 esac,表示结束分支;若与模式 1 不相匹配, 则继续与模式 2 进行比较,若取值相同则执行模式 2 后的命令序列,直到遇见双分号“;;”后 跳转至 esac,表示结束分支……依此类推,若找不到任何匹配的值,则执行默认模式“*)” 后的命令序列,直到遇见 esac 后结束分支

4.案例

4.1 检查用户输入的字符类型

4.2编写 apache 启动服务脚本

 4.3罚抄案例

read -p " 请输入你的分数: " score
case $score in
100 )
echo "秀儿!"
;;
9[0-9])  //表示90到99
echo "$score 分,抄10遍!"
;;
[78][0-9])   //表示70到89
echo "$score 分,抄20遍!"
;;
6[0-9])   //表示60到69
echo "$score 分,抄30遍!"
;;
[0-9]|[1-5][0-9] )  //表示0-9 和10-59  |表示或
echo "$score 分,全抄30遍!"
;;
*)
echo " 输入有误! "
esac

五、总结

1.条件测试的语法

文件测试、整数值比较、字符串比较、逻辑测试

2.if条件语句的语法

单分支、双分支、多分支、嵌套

3.case多分支语句的语法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值