Shell编程之条件语句

目录

前言

一、条件测试

1.test命令

2.文件测试

3.整数值的比较

4.字符串的比较

 5.逻辑测试

二、if语句

1.单分支的if语句

2.双分支的if语句

3.多分支的if语句

 三、case语句

1.case语句的结构

2.case分支语句

总结


前言

如何进行条件测试操作,并通过正确的条件语句,使Shell脚本具有一定的判断能力,以我们设置的不同条件来完成不同的管理任务。

一、条件测试

1.test命令

Shell环境中根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值是0时表示成功,否则(非0)表示失败。使用专门的测试工具-test命令。

格式:test 条件表达式

格式:[ 条件表达式 ]

格式:[[]]

2.文件测试

常用选项

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

3.整数值的比较

使用时将操作选项放在要比较的两个整数之间

常用的操作

-eq第一个数等于(Equal)第二个数
-ne第一个数不等于(Not Equal)第二个数
-gt第一个数大于(Greater Than)第二个数
-lt第一个数小于(Lesser Than)第二个数
-ge第一个数大于或等于(Greater or Equal)第二个数
-le第一个数小于或等于(Lesser or Equal)第二个数

4.字符串的比较

字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置参数是否符合要求。

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

格式2:[ -z 字符串 ]

常用的测试操作符解释
=第一个字符串与第二个字符串内容相同
!=第一个字符串与第二个字符串内容不同,!号表示相反的意思
-z检查字符串内容是否为空,对于未定义或赋予空值的变量将视为空串

 5.逻辑测试

判断两个或多个条件之间的依赖关系

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

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

格式2:命令1 操作符 命令2 ...

&&:逻辑与,表示"而且",只有当前后两个条件都成立时,整个测试命令的返回值―才为0(结果成立)。使用test命令测试时,“&&"可改为"-a"。
||:逻辑或,表示"或者",只要前后两个条件中有一个成立,整个测试命令的返回值即为0(结果成立)。使用test命令测试时,“||"可改为"-o"。
!:逻辑否,表示"不",只有当指定的条件不成立时,整个测试命令的返回值才为0(结果成立)。

二、if语句

1.单分支的if语句

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

2.双分支的if语句

若条件不成立,则忽略then,跳至else后面的命令序列执行,直到fi结束

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

3.多分支的if语句

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

要求每个阶段学习结束后会有阶段测试,默写和测试不合格者会有相应惩罚
惩罚规则如下:
90-100 错题 抄 10

80-89 错题 抄 20

60-79 错题 抄 30

60以下 全抄 30

 三、case语句

1.case语句的结构

case语句主要使用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支if语句非常相似,只不过if语句需要判断多个不同的条件,而case语句只是判断一个变量的不同取值。

2.case分支语句


case 变量值 in
模式1)
    命令序列1
    ;;
模式2)
    命令序列2
    ;;
    
    ......
 
*)
    默认命令序列
esac

总结

使用[[]]、[] 或test命令可以执行条件测试操作

执行命令或程序后会返回一个状态值,若返回值为0,表示执行成功;若不为0,则表现执行失败或出现异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值