Shell 条件语句(条件测试、if、case)

目录

前言

一、条件测试

1.测试命令-test

2.文件测试

3.整数值比较

4.字符串比较

5.逻辑测试

二、if语句

1.单分支语句

2.双分支语句

3.多分支语句

三、case分支语句

1.结构

2.应用示例


前言

  • 我们前面已经学习了编写比较简单的shell脚本:各语句按照顺序依次来执行,从而实现“批量处理”的自动化过程
  • 然而,这样比较“单一”的顺序结构写多了,你会不会觉得简单了点?这样,脚本过于机械化,像流水线一样,不够“智能”!
  • 那么,怎样才能从容的应对复杂的系统任务呢
  • 我们接下来去学习如何进行条件测试操作,并通过正确使用if语句,从而使shell脚本具备一定的“判断”能力,从而能根据不同的条件来完成不同的管理任务

一、条件测试

1.测试命令-test

  • 要使shell脚本程序具备一定的“智能”,第一步就需要区分开来不同的情况以确定执行何种操作
  • Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,为0时则成功(表示条件成立),否则(非0值)表示失败或异常

2.文件测试

  • 常用的测试操作符
常见操作选项解释
-f测试是否为文件(File)
-d测试是否为目录(Directory)
-e测试目录或文件是否存在(Exist)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(Excute)

3.整数值比较

常用操作符解释
-eq等于(Equal)
-ne不等于(Not Equal)
-gt大于(Greater Than)
-lt小于(Lesser Than)
-ge大于或等于(Greater or Equal)
-le小于或等于(Lesser or Equal)

4.字符串比较

  • 通常用来检查用户输入、系统环境是否满足条件
常用的测试操作符解释
=第一个字符串与第二个字符串内容相同
!=第一个字符串与第二个字符串内容不同,!号表示相反的意思
-z检查字符串内容是否为空,对于未定义或赋予空值的变量将视为空串

5.逻辑测试

  • 判断两个或多个条件之间的依赖关系
  • 当系统任务取决于多个不同的条件的时候,判断是根据这些条件同时成立还是只要其中一个成立等情况

常用测试操作符:

  • -a或&&:逻辑与,“而且”的意思,得前后条件都符合
  • -o或||:逻辑或,“或者” 的意思,二者其中符合一即可
  • !:逻辑否,只有当指定的条件不成立的时候,结果才成立
  • “&&”、“||”操作符能够正常存在于“[[]]”条件判断结构中,但是如果出现在“[]”结构中会报错
     

二、if语句

1.单分支语句

mark

##基本格式
if 条件测试操作
    then  命令序列
fi

2.双分支语句

mark

 

##基本格式
if 条件测试操作
	then  命令序列1
	else  命令序列2
fi

3.多分支语句

mark

##基本格式
if 条件测试操作1
	then  命令序列1
elif  条件测试操作2
	then  命令序列2
else
	命令序列3
fi

 

三、case分支语句

  • case语句主要用于以下场景:当每个变量存在多种取值时,需要对其中的每一种取值分别执行不同的命令序列
  • if语句是要判断多个不同条件,而case判断一个变量的不同取值

1.结构

mark

##基本格式
case 变量值 in
模式1)
	命令序列1
	;;
模式2)
	命令序列2
	;;
	....
*)
	默认命令序列
esac
  • case行尾必须为单词 in ,每一行必须以括号“)”结束
  • 双分号“;;”表示命令序列结束
  • 可以用方括号“[]”表示一个连续的范围;还可以用“|”表示,比如“A|B”
  • 最后的“)*”表示默认模式,如果以上取值都不相同,则执行此行

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值