文章目录
- 一、for 循环语句的结构
- 二、while循环语句
一、for 循环语句的结构
- 读取不同的变量值,用来逐个执行同一组命令
格式:
复制代码
1
2
3
4
5<for> 变量名 <in> 取值列表 <do> 命令序列 <done>
例:
复制代码
1
2
3
4
5<for> 收件人 <in> 邮件地址列表 <do> 发送列表 <done>
实例1:
要求
- 批量添加客户
- 用户名存放在users.txt文件中,每行一个
- 初始密码军设为123456
- 验证脚本
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24[root@localhost ~]#vim for2.sh #创建脚本文件名为for.sh #!/bin/bash i=`cat /root/users.txt` #将要创建的用户名放到users.txt文件中(一行一个用户名) for a in $i #每次循环从列表里读取一个用户名 do useradd $a #创建用户 echo "123456" | passwd --stdin $a &> /dev/null #为账户设置密码,为了不让密码信息泄露所以全部仍进黑洞中 echo "创建用户${a}成功" #输出 done 保存退出 [root@localhost ~]#chmod +x for2.sh 赋权 [root@localhost ~]#./for2.sh 运行脚本 创建用户cat成功 创建用户pig成功 创建用户dog成功 创建成功 创建用户yunyang成功 创建用户bird成功 创建用户baoshuaipeng成功 [root@localhost ~]#vim for2.sh
批量删除用户,在刚刚脚本基础上进行修改
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21[root@localhost ~]#vim for2.sh #!/bin/bash i=`cat /root/users.txt` for a in $i do userdel -r $a #echo "123456" | passwd --stdin $a &> /dev/null echo "删除用户$a成功" done [root@localhost ~]#./for2.sh 删除用户cat成功 删除用户pig成功 删除用户dog成功 删除用户yunyang成功 删除用户bird成功 删除用户baoshuaipeng成功
实例2:
要求
- 根据IP地址检查主机状态
- IP地址存放在ipadds.txt文件中,每行一个
- 使用ping命令检测各主机的连通性
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[root@panrj ~]#vim ip.sh #!/bin/bash i=`cat /root/ip.txt` for aa in $i do ping -c3 -i0.2 -W3 $aa &> /dev/null ##开始ping检测,-c是ping的次数,-i是每次ping的时间,-w是ping的时候延时时间 if [ $? -eq 0 ] ## #判断语句,当使用$?返回0时,说明上面ping成功 then echo "$aa开启" echo "$aa关闭" fi done [root@panrj ~]#chmod +x ip.sh [root@panrj ~]#source ip.sh 192.168.182.1开启 192.168.182.1关闭 192.168.182.2开启 192.168.182.2关闭
实例三:
计算1到100的所有的整数和。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[root@192 ~]#vim for.sh #!/bin/bash sum=0 ##对于整数和的运算来说,整数和sum也算是一个变量,所以在运算之前我们需要先定义整数和起始的一个数字,这里起始的数字是0,因为1-100的和是从0开始算起的。 for i in $( seq 1 1 100 ) 《或者 for i in {1..100}》 ##遍历需要运算的数字区间,也就是0-100 do sum=$[$i+$sum] #这里是求和的运算。我们可以理解为:这次遍历出来的数字,加上上一次运算出来的整数的和即为这次算出来的整数和。比如这次循环遍历到了3,上次的和是1+2=3,所以这次就等于上次的和1+2=3加上这次遍历的数字3,就得出这次循环算出来的整数和为6. done echo $sum [root@192 ~]#chmod +x for.sh [root@192 ~]#./for.sh 5050
二、while循环语句
while语句结构
重复测试某个条件,只要条件成立则反复执行。
复制代码
1
2
3
4
5
6语句结构: <while> 条件测试操作 <do> 命令序列 <done>
实例一:
要求
- 批量添加用户
- 用户名称以stu开头,按数字顺序进行编号
- 一共添加20个用户,即stu1,stu2…stu20
- 初始密码均设为123456
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14[root@192 ~]#vim while.sh #!/bin/bash i=0 while [ $i -le 20 ] do useradd stu$i echo "123456" | passwd --stadin stu$i &> /dev/null echo "用户stu$i添加成功" <let i++ #使用let命令进行运算,使a每次加1> 这一步是比较重要的,不加这一步的话会进入死循环 done
在此基础上也可以修改进行删除用户
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14[root@192 ~]#vim while.sh #!/bin/bash i=0 while [ $i -le 20 ] do #useradd stu$i # echo "123456" | passwd --stadin stu$i &> /dev/null #echo "用户stu$i添加成功" userdel -r stu$i <let i++ #使用let命令进行运算,使a每次加1> 这一步是比较重要的,不加这一步的话会进入死循环 done
实例二:
猜商品价格小游戏
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#!/bin/bash a=$[ $RANDOM % 1000 ] b=0 while [ $b -lt 1 ] do read -p "猜猜商品的价格: " i if [ $i -lt $a ] then echo "猜少啦,再猜一次" elif [ $i -gt $a ] then echo "哎又多啦,再来一次:" elif [ $i -eq $a ] then echo " 哎哟不错噢!!答对啦! " b=2 fi done
成果如下:
最后
以上就是清脆微笑最近收集整理的关于Shell脚本的三种循环for、while、if------未完的全部内容,更多相关Shell脚本内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复