shell脚本流程控制语句(if、for、while、case)

目录

一、if 条件判断测试语句

1、if分为单分支结构

2、 if的双分支结构   

3、if 多分支结构的if语句

4、需求

5、if嵌套

6、配合if使用的条件判断,一般使用tset和[ ]两种

①test 功能

②整数比较

 二、for条件循环语句

1、需求:利用shell脚本调用指定文件内容新建多个用户

2、需求: 打印5行内容

三、while 条件循环语句

四、case 语句

总结 :


一、if 条件判断测试语句

根据实际情况自动执行相应的命令;if分为单分支结构、双分支结构和多分枝结构。

1、if分为单分支结构

if单分支结构由 if、then、fi 组成(相当于口语:如果......那么......)

语法结构:

if   条件测试操作   ------------------------>> if 目录不存在

   then  命令序号    ----------------------->> then  创建该目录

fi                            ------------------------>> fi 结束

也可以写成一行用分号隔开:

if  条件  ;then 命令;fi

需求:利用shell自动创建一个固定名字de目录

2、 if的双分支结构   

由if、then、else 、fi组成

功能实现方式:进行一次条件匹配,如果与条件匹配,则执行相应的预设命令,反之去执行不匹配的预设命令。相当于口语的“如果......那么......或者......那么”

语法结构:

if 条件

then

     命令

else

     命令

fi

需求:使用双分支的if条件语句验证某台主机是否在线

3、if 多分支结构的if语句

由“if 、then 、elif 、else、fi”组成

进行多次条件判断,一次在匹配中匹配成功都会执行相应的预设命令

语法结构:

if 条件1

 then

  命令1

elif  条件2

  then

   命令2

elif  条件3

  then 命令3

.......

else 

    命令N

fi

4、需求

提示"请输入你的考试成绩:" 接收用户输入一个成绩, 之后使用if else条件句判断
要求1: 小于 60 输出"不及格"
要求2: 大于等于70 并且 小于80 输出"中等"
要求3: 大于等于80 并且 小于90 输出"良好"
要求4: 大于等于90 并且 小于等于100 输出"优秀"
要求5: 以上不符合输出"成绩不合法"

(())是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于等关系运算,以及与、或、非逻辑运算。当 a 和 b 相等时,(( $a == $b ))判断条件成立,进入 if,执行 then 后边的 echo 语句。

5、if嵌套

需求:额外需求:评委被投诉后,现将女生、男生需要区分开来,女生7-10分为优秀,男生8-10分为优秀,女生的学号为1-10 男生的学号为11-20 ,请以交互时的方式询问“请输入参赛学员的学号(1-20):”,最后输出"该学生为男生/女生,成绩为优秀"

验证:

PS:在shell脚本中,单等号和双等号属于算数运算符;“-eq”属于关系运算符

1、相等关系运算符“-eq”不能在算数运算表达式“(( ))”中

2、在条件表达式“[ ]”中,单等号和双等号等价,都是相等算数运算符

3、在算数运算表达式“(( ))”中,单等号是赋值算数运算符,双等号为相等算数运算符

6、配合if使用的条件判断,一般使用tset和[ ]两种

①test 功能

                      test命令对整数比较测试

                      test命令对字符串

                      使用test命令对文件测试

②整数比较

语法:if test 数字1 选项 数字2   

选项:

选项说明
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真

 二、for条件循环语句

for循环语句允许脚本一次性读取多个文件信息,然后逐一对信息进行操作。但遇到处理的数据时有范围的。for的语句在好不过了。

---------------------------------------------------------------------------------------------------------------------------------

语法组成:由for...in 、do 、done组成

for 变量名  in  {取值列表}                 取值列表:{n..N} 表示一个范围,或者提前定义一个文件,注入                                                                          内容

do

    命令序列

done

---------------------------------------------------------------------------------------------------------------------------------

注:

for i in {1..50..2}   表示1~50的奇数。(已1为开始,步长为2 ,就是每次加2:1、1+2、3+2、                                     5+2......)

for i in {2..50..2}  表示2~50的偶数。(2为开始,依次加2递增)

for i in {10..1}  表示10到1倒序排列

for i in ${seq 10}  表示1到10 正序排列

for i in ${seq 10 -1 1} 表示 1到10倒序排列

for i in ${seq 1 2 10} 表示1到10的奇数,中间步长为2

for i in ${seq 0 2 10} 表示0到10的偶数,中间步长为2

1、需求:利用shell脚本调用指定文件内容新建多个用户

创建用户的所有用户放在文件中 

验证: 

同时删除多用户

 

2、需求: 打印5行内容

三、while 条件循环语句

whil和for 都为条件循环语句,二者的区别在于while的条件循环是不知道最终执行多少次(可定义结束时间)

而for是有使用范围和目标的。

在while中只要条件成立就会一直循环,当条件不成立时就会退出。脚本也可以加break进行退出。

语法组成:由while  true 、do 、done组成  或while :  、do 、done及while 条件判断 、do、done

需求:猜价格游戏

四、case 语句

1、功能:case 语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写

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

3、语法格式:

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

需求:请输入周几(1~7),看每天吃啥?

脚本:

 验证:

总结 :

学习shell脚本中if、for、while、case语句的用法

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忙碌滴比特流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值