Shell_06_判断和循环

判断

if

条件判断语句:根据条件进行判断并执行对应的命令


指令格式:

if [ 条件1 ];then
程序段1
elif [ 条件2 ];then
程序段2
else
程序段3
fi

1)if和fi总是成对出现(代表判断语句的开始和结束);

2)判断语句可嵌套使用;

3)当一个判断语句含有多个相同层级if或elif时,则只有第一个条件返回的状态码为0的语句会被执行(若层级不相同,则可运行多个)


1)条件成立,运行then后跟的程序段(反之,运行else后跟的程序段)

//根据条件返回的状态码判断是否成立(0为成立,其他均为失败)

2)条件左右两边必须加空格,否则无法识别条件;

3)也可执行指定命令作为条件,但运行结果会显示在终端


如:通过条件判断语句,判断当前用户的家目录和指定文件是否存在

1)编写test5.sh脚本文件
在这里插入图片描述

2)调用test5.sh脚本文件
在这里插入图片描述


如:通过条件判断语句,检查拥有家目录却不存在的用户和没有家目录的用户

1)编写test6.sh脚本文件
在这里插入图片描述

2)调用test6.sh脚本文件
在这里插入图片描述

case

内容判断语句:根据变量内容进行判断并执行对应的命令


指令格式:

case ${变量名} in

“变量内容1”)

程序段1
;;
“变量内容2”)
程序段2
;;
“变量内容N”)
程序段N
;;
*)
;;
esac

1)每个变量内容的程序段都需用两个分号“;;”代表程序段落的结束;

2)case和esac总是成对出现(代表内容判断的开始和结束);

3)变量可为:定义变量、输入变量、内置变量、接受变量;

4)若变量内容含有多个内容时,内容之间使用“|”分隔;


如:设置hello3.sh脚本文件仅在输入hello时才回应

1)编写hello3.sh脚本文件
在这里插入图片描述

2)调用hello3.sh脚本文件
在这里插入图片描述


如:通过内容判断语句,属于不同的内容显示不同的回应

1)编写test26.sh脚本文件
在这里插入图片描述

2)调用test26.sh脚本文件
在这里插入图片描述

循环

循环类别

for do done

for循环:循环指定次数


指令格式1:

for 形式变量 in 内容1 内容2 内容N
do
程序段
done

1)内容1~N会依次带入形式变量;

2)内容1~N可用数组变量或变量形式代替;

3)当内容中含有单引号或空格时,需使用双引号括起来

//也可通过修改IFS变量,修改字段分隔符

4)当循环结束后,形式变量默认保存最后一个带入的内容;

5)在done后添加输出重定向,可将循环结果导入到指定文件中;


如:通过for循环实现变量不同内容的输出

1)编写test3.sh脚本文件;
在这里插入图片描述
2)调用test3.sh脚本文件
在这里插入图片描述


如:建立dir_perm.sh文件实现判断目录下所有文件的权限

1)编写dir_perm.sh脚本文件;
在这里插入图片描述

2)调用dir_perm.sh脚本文件
在这里插入图片描述


内部字段分隔符(Internal Field Separator):Shell中用于分隔每个字段的字符

1)内部字符分隔符的变量位:IFS

2)默认值为:空格

3)赋值格式:IFS=字符

//若有多个字符作为分隔符,可在赋值时连写在一起


如:将换行符、冒号、分号和双引号作为分隔符的格式为:IFS=$‘\n’:;”


如:通过IFS变量实现for循环中的多个换行输入

1)编写test7.sh脚本文件
在这里插入图片描述

2)调用test7.sh脚本文件
在这里插入图片描述


指令格式2:

for (( 初始值;循环条件;赋值运算 ))
do
程序段
done

1)格式类似于C语言的for循环,且可调用变量;

2)初始值和赋值运算可有多个,但循环条件仅能有一个;


如:创建sum1_input.sh文件,计算1加到输入数的和

1)编写sum1_input.sh脚本文件
在这里插入图片描述
2)调用sum1_input.sh脚本文件
在这里插入图片描述


如:在for循环中定义多个初始值和赋值运算

1)编写test8.sh脚本文件
在这里插入图片描述
2)调用test8.sh脚本文件
在这里插入图片描述

while do done

while循环:直到条件不成立才退出循环


指令格式:

while [ 判断条件 ]
do
程序段
done

(1)若指定多个判断条件时

1)只根据最后一个判断条件的返回的状态码判断是否继续循环;

2)每个判断条件需单独占据一行;

3)多个判断条件会依次执行;


(2)在done后添加输出重定向,可将循环结果导入到指定文件中;


如:通过while循环输出数值

1)编写test9.sh脚本文件
在这里插入图片描述

2)调用test9.sh脚本文件
在这里插入图片描述

until do done

until循环:直到条件成立才退出循环

指令格式:


until [ 判断条件 ]
do
程序段
done

(1)若指定多个判断条件时

1)只根据最后一个判断条件的返回的状态码判断是否继续循环;

2)每个判断条件需单独占据一行;

3)多个判断条件会依次执行;


(2)在done后添加输出重定向,可将循环结果导入到指定文件中;

控制循环

嵌套循环

嵌套循环(Nested Loop):循环的程序段内可调用任意类型的命令(包含循环)


如:创建choice_what.sh从数组中随机输出三个数,且不能重复

1)编写choice_what.sh脚本文件
在这里插入图片描述

2)调用choice_what.sh脚本文件
在这里插入图片描述


如:通过内部循环实现/etc/passwd文件的格式化输出

1)编写test10.sh脚本文件;
在这里插入图片描述

2)调用test10.sh脚本文件
在这里插入图片描述

跳出循环

跳出循环分为:break命令、continue命令


(1)break命令:跳出当前正在执行循环,并结束循环

1)指令格式:break N

//N指定跳出的循环层级(若没有,则默认为1)


如:通过break命令,跳出for循环

1)编写test11.sh脚本文件
在这里插入图片描述
2)调用test11.sh脚本文件
在这里插入图片描述


(2)continue命令:跳出本次循环,开始下一次循环

1)指令格式:continue N

//N指定跳出的循环层级(若没有,则默认为1)


如:通过continue跳出循环

1)编写test12.sh脚本文件
在这里插入图片描述
2)调用test12.sh脚本文件
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值