Shell 从入门到精通系列 (第三章 条件判断语句上篇)

条件判断语句

  • 简介
条件判断语句是一种最简单的流程控制语句,该语句使得程序根据不同的条件来执行不同的程序分支。

使用if语句进行条件判断​

语法:
if expression
then
statement1
statement2
fi
或者
if expression; then
statement1
statement2
fi
分号的作用是表示if子句已经结束,后面的代码是then子句

流程分析:

expression 可以是一个表达式或者shell脚本,只有当expression的退出状态码为0(值为真)才会执行then
子句后面的语句,then 后面可以跟多条语句,最后用fi结束if结构

案例1:

​判断文件类型,判断 abc.txt是不是一个常规文件


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

案例2:

​判断状态码c000011文件是否创建成功


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

注意: 条件测试可以用test命令,也可以用方括号[]

案例3:

​使用空命令作为判断条运维开发件,空命令用一个冒号表示 ":", 不做任何事情,但它的状态码有哪些退出状态码永远是0,所以条件判断的结果永远为true


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

案例4:

​ 使用&& 操作符代替if语句, 判断当前用户是否是root,如果不是root,则打印&a运维开发mp;&后面的语句,并且exit显式退出


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

由于当前用户是root,所以没有任何输出


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

切换用户


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

注意: 在使用if语句的时候,一定不要忘记最后的fi结束标志,否则会报以下错误


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

使用if else语句进行流程控制

简介:

比如上面我们又一个案例是判断一个文件是否创建成功,当创建成功的时候会打印一行信息,但是创建不成功则没有任何输出,这样对用户不太友好,所以我们要在文件创建不成功的时候也要给用户一个提示

语法:

if expression

then

statement1

statement2

else

statement3

statement4

fi

流程分析:

当expression 为真时, 执行then后面的语句,否则执行else 后面的语句,最后以fi结束 语句块

案例1:

提示用户输入两个数字,如果数字大于10则输出大于10的消息,否则输出小于等于10的消息


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

输入10:


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

输入20:

案例2:

​if e状态码e000001lse 语句不仅可以处理比较简单的两个分支的情况,还可以通过嵌套来处理多个分支的情况

下面的案例通过if else语句来根据百分制成linux系统绩来输出成绩等级

#!/bin/bash
echo "Please enter a score:"
#读取用户输入数据
read score
#如果用户没有输入数据,则提示用户重新输入
if [ -z "$score" ];then
echo "you enter nothing,please enter a score"
read score
else
#如果用户输入的数据不对,则重新输入
if [ "$score" -lt 0 -o "$score" -gt 100 ];then
echo "the score should be between 0 and 100.please enter again:"
read score
else
#输出级别A
if [ "$score" -ge 90 ]; then
echo "the grade is A"
else
#输出级别B
if [ "$score" -ge 80 ];then
echo "the grade is B"
else
#输出级别C
if [ "$score" -ge 70 ];then
echo "the grade is C"
else
#输出级别D
if [ "$score" -ge 60 ];then
echo "the grade is D"
else
#输出级别E
echo "the grade is E"
fi
fi
fi
fi
fi
fi

测试:

​输入分数10,得到等级为E

输入分数60,得到等级D


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

注意: shell中的if else结构并没有限if语句的用法制嵌套的层数,用户可以根据自己的情况灵活控控制

使用if elif语句进行多条件判断

简介:

​除了if else语句外,shell还提供了一个 if elif语句,通过该语句,用户可以以比较优雅的方式来处理多分支的情况,

语法:

if expression1

then

statement系统/运维1

statement2

elif expression2if语句流程图

then

statement3

statement4

elif expression3

then

statement5

statement6

else

statement

fi

流程分析:

如果expression1 表达式为真,则执行第一个then之后的句子,statement1和statement2
否则继续下面的elif判断,如果expression2表达式为真,则执行statement3和statement4
以次类推,如果所有的表达式都为假,则执行else 子句中的语句,最后fi结束

案例:

对上面的案if语句格式例,根据百分制成绩来输出成绩等级做改进,用 if elif 来代替多层嵌if语句属于什么语句套的 if else语句,从linux常用命令而是的程序的可读性大大加强


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

使用exit语句退出程序

简介:

​有时候用户需要在满足某个条件时系统运维工作内容退出程序​的执行,可以通过if语句配合exit来实现

语法:

exit status

status表示退出状态,该参数是一个整数值,取值范围 0-255,可以通过系统变量$?来获取程序的退出状态码

案例1:


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

案例1:

​if 与 exit语句结合,linux常用命令$1是我们要传给linux重启命令脚本的参数,如果文件存在,则打印文件存在,并且退出状态码为1;如果文件不存在,则创建该文件,并且把退出状态码设置为0


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)

链接:​​https://ke.qq.com/course/4300856?tuin=d8aedf68​​


                                            Shell 从入门到精通系列 (第三章 条件判断语句上篇)