本章结构

循环语句

for循环语句

while循环语句

untli循环语句

shell函数

shell数组

一、使用for循环语句

for循环

读取不同的变量值,用来逐个执行同一组命令

for 变量名 in 取值列表                             for 收件人 in  邮件地址列表

do                                                                 do

     命令序列                                                               发送邮件

 done                                                            done 

shell编程之循环语句(for、while、until)_txt文件

解释:假设图中取值n的数值等于6,变量为a=0可是a<=6,没错运行脚本都会使a+1也就是a++

第一次运行a=1不满足条件会进入for循环,直到a=6是结束for循环

解析案例:

shell编程之循环语句(for、while、until)_txt文件_02

do开始 ,echo输出变量$i , done 结束 

结果显示到6时循环就结束了

案例2:通过for循环简单的做一个打印hello world

shell编程之循环语句(for、while、until)_for循环_03

shell编程之循环语句(for、while、until)_for循环_04

案例3:每隔2个数去打印,此为偶数打印

shell编程之循环语句(for、while、until)_txt文件_05

shell编程之循环语句(for、while、until)_ip地址_06

案例4

shell编程之循环语句(for、while、until)_for循环_07

shell编程之循环语句(for、while、until)_ip地址_08

shell编程之循环语句(for、while、until)_for循环_09

案例5:通过for循环批量创建liupeng这个用户加上后缀1~9,并修改密码

shell编程之循环语句(for、while、until)_for循环_10

shell编程之循环语句(for、while、until)_txt文件_11

案例6:方法二批量添加用户(用户名可以自己选)

1.用户名存放在users.txt文件中,每行一个

2.初始密码均为123456

3.验证脚本

shell编程之循环语句(for、while、until)_txt文件_12

shell编程之循环语句(for、while、until)_ip地址_13

shell编程之循环语句(for、while、until)_ip地址_14

shell编程之循环语句(for、while、until)_for循环_15

运行一次不显示是否成功,可再次运行会显示用户已存在

shell编程之循环语句(for、while、until)_txt文件_16

验证用户创建成功,通过cu进入用户验证密码是否设置成功

案例7:根据IP地址检查主机状态

IP地址存放在user.txt文件中,每行一个(文件名称可以自行制作)

使用ping命令检测各主机的连通性

shell编程之循环语句(for、while、until)_txt文件_17

shell编程之循环语句(for、while、until)_for循环_18

shell编程之循环语句(for、while、until)_txt文件_19

shell编程之循环语句(for、while、until)_txt文件_20

由于我只开了一个虚拟机18,所以其他的down掉了

案例7:密码验证三次错误 

shell编程之循环语句(for、while、until)_ip地址_21

shell编程之循环语句(for、while、until)_ip地址_22

案例8:商场会员抽奖,

解释一下取值范围为啥4+1,因为是从0.1.2.3开始的4位数

[root@ZX ~]# expr $[RANDOM%4]     #可以去试下不+1不会出现4这个说

0

[root@ZX ~]# expr $[RANDOM%4+1]      #加1后相当于4里随机的数加1

1

shell编程之循环语句(for、while、until)_for循环_23


shell编程之循环语句(for、while、until)_ip地址_24

这是为抽奖准备的名单

shell编程之循环语句(for、while、until)_for循环_25

案例9:打印小星星

shell编程之循环语句(for、while、until)_ip地址_26

可以将其中的变量固定(start改成任意数字)

shell编程之循环语句(for、while、until)_txt文件_27

案例10 九九乘法表。 想要将结果9开头只要将1换成9,9换成1 在加上..-1

shell编程之循环语句(for、while、until)_txt文件_28

shell编程之循环语句(for、while、until)_txt文件_29

二、while语句的结构

重复测试某个条件,只要条件成立则反复执行

while 条件测试操作                           while 未猜中正确价格

do                                                    do

       命令序列                                              反复猜测商品价格

done                                                 done

shell编程之循环语句(for、while、until)_for循环_30

案例1:设为5 在最后的值为6是跳出循环

shell编程之循环语句(for、while、until)_for循环_31

小优化

shell编程之循环语句(for、while、until)_ip地址_32

可以看出在值为6是跳出循环

shell编程之循环语句(for、while、until)_ip地址_33

案例2 输出100不能被整除的数

shell编程之循环语句(for、while、until)_for循环_34

shell编程之循环语句(for、while、until)_txt文件_35

案例3

shell编程之循环语句(for、while、until)_for循环_36

sleep 2 是睡眠两秒

shell编程之循环语句(for、while、until)_ip地址_37

案例4猜数字

shell编程之循环语句(for、while、until)_txt文件_38

shell编程之循环语句(for、while、until)_for循环_39

while语句应用示例1、例2

批量添加用户

1)用户名称以wufan开头,按数字顺序进行编号

2)一共添加20个用户,即stu1、stu2、......、stu20

3)初始密码均为123456

shell编程之循环语句(for、while、until)_ip地址_40

shell编程之循环语句(for、while、until)_for循环_41

示例2

猜商品价格游戏

1)通过变量RANDOM获得随机数

2)提示用户猜测并记录次数,猜中后退出循环

shell编程之循环语句(for、while、until)_txt文件_42

shell编程之循环语句(for、while、until)_txt文件_43

案例3:

continue 语句和 break 语句的区别是,continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue和break 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何语句中使用。

跳过5但不会结束

shell编程之循环语句(for、while、until)_ip地址_44

shell编程之循环语句(for、while、until)_txt文件_45

到5就结束整个循环

shell编程之循环语句(for、while、until)_for循环_46

shell编程之循环语句(for、while、until)_ip地址_47

如果在continue前面加上2就会停止两次循环

shell编程之循环语句(for、while、until)_txt文件_48

满足条件跳过两次

shell编程之循环语句(for、while、until)_ip地址_49

此为continue没加2的结果满足后只跳过一次

shell编程之循环语句(for、while、until)_txt文件_50

定义商城

shell编程之循环语句(for、while、until)_ip地址_51

shell编程之循环语句(for、while、until)_txt文件_52

三、until 循环语句结构

until  条件测试操作
do
命令序列
done

until语句应用示例

示例1

计算1-50的和值

通过循环累加的方式计算1~50的和值

shell编程之循环语句(for、while、until)_ip地址_53

shell编程之循环语句(for、while、until)_txt文件_54

#!/bin/bash
username=$1
if [ $# -lt 1 ];
then
echo "Usage: `bashname $0` <username> [<message>]"
exit 1
fi

if grep "^$username: " /etc/passwd >/dev/null;
then
:
else
echo "用户存在"
exit 1
fi

until who|grep "$username" > /dev/null
do
echo "用户不存在"
sleep 5
done

mes=$*

echo $mes | write $username

四、编写脚本的思路(基本)

1、明确脚本的功能

实现功能

比如:需求创建测试用户,多个可以用for循环写、while循环、if多分支

注:知道需求含义来定义脚本功能

2、编写脚本是会使用到哪些命令?

useradd passwd for let ceho

3、把变化的数据使用变量表示

1)固定长的定义变量、经常调用参数课设变量

2)变化的定义变量

4、选择合适的流程控制语句

循环 双分支 多分支 case等一下控制语句