shell脚本:循环语句(for循环,while循环,until循环)与使用方法

循环语句的结构以及语法

■For循环语句

在这里插入图片描述

FOR循环是一直去取值,取完为止才会结束

For语句应用示例

示例1
●批量添加用户

首先去目录下创建一个用户名池提供使用
用户名存放在users.txt文件中,每行一个
[root@localhost ~]# cd /opt/xh/
[root@localhost xh]# vi user.txt
tom
jack
tang
susam

创建for循环脚本
[root@localhost xh]# vi for1.sh   

#!/bin/bash
U=$(cat /opt/xh/user.txt)
for i in $U                      相当于去/opt/xh/user.txt里去拿
do
        useradd $i             
        echo "创建用户$i"
        echo "123456" | passwd --stdin $i &> /dev/null        ◆初始密码均设为123456 
done
◆验证脚本
[root@localhost xh]# chmod +x for1.sh      给执行权限
[root@localhost xh]# ./for1.sh             执行脚本
创建用户tom
创建用户jack
创建用户tang
创建用户susam

[root@localhost xh]# tail -4 /etc/passwd

tom:x:1001:1001::/home/tom:/bin/bash
jack:x:1002:1002::/home/jack:/bin/bash
tang:x:1003:1003::/home/tang:/bin/bash
susam:x:1004:1004::/home/susam:/bin/bash
可以看到我们创建成功了 

[root@localhost xh]# su - tom      然后我们切换账户试试密码是不是123456
                                   注:root账户切换任何账户不需要输密码,
                                   所以我们需要先切换到其他账户
[tom@localhost ~]$ su - jack
Password:                          这里输入密码123456
[jack@localhost ~]$                可以看到登录jack成功了

■WHILE循环语句

在这里插入图片描述
重复测试某个条件,只要条件成立则反复执行

While语句应用示例

示例
●批量添加用户
◆用户名称以stu开头,按数字顺序进行编号
◆—共添加20个用户,即stu1、stu2、.......、stu20
初始密码均设为123456

[root@localhost xh]# vi while.sh
#!/bin/bash
P="stu"
#i初始值为1
i=1       
while [ $i -le 20 ]
do
        #当两个变量在一起组合时,需要将其中一个变量用{}括起来,防止混乱
        useradd ${P}$i
        echo "创建${P}$i账户成功"
        echo "123456" | passwd --stdin ${P}$i &>/dev/null
        let i++          每循环一次 i+1
done
执行脚本验证
[root@localhost xh]# chmod +x while.sh 
[root@localhost xh]# ./while.sh 
创建stu1账户成功
创建stu2账户成功
创建stu3账户成功
创建stu4账户成功
创建stu5账户成功
创建stu6账户成功
创建stu7账户成功
创建stu8账户成功
创建stu9账户成功
创建stu10账户成功
创建stu11账户成功
创建stu12账户成功
创建stu13账户成功
创建stu14账户成功
创建stu15账户成功
创建stu16账户成功
创建stu17账户成功
创建stu18账户成功
创建stu19账户成功
创建stu20账户成功

[root@localhost xh]# tail -5 /etc/passwd   查看passwd文件最后5行
stu16:x:1020:1020::/home/stu16:/bin/bash
stu17:x:1021:1021::/home/stu17:/bin/bash
stu18:x:1022:1022::/home/stu18:/bin/bash
stu19:x:1023:1023::/home/stu19:/bin/bash
stu20:x:1024:1024::/home/stu20:/bin/bash

■until循环语句

在这里插入图片描述

Until语句应用示例

因为是条件不成立反复执行,所以当$i不等于20时,一直执行到条件满足为止
[root@localhost xh]# vi until.sh
i=0
until [ $i -eq 20 ]       【要求i的值等于20,初始值为1do
        echo "$i"          打印当前的i值
        let i++             每执行一次i+1
done
验证
[root@localhost xh]# ./until.sh 
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


我们可以看到从019执行了二十次
当21次i=20时,条件满足自动退出,所以并没有20

猜你喜欢

转载自blog.csdn.net/weixin_48190891/article/details/108122160