1.while循环基本概述
只要条件成立,就会反复执行循环语句,直到条件不成立时,才会退出。
语法
#第一种
while 条件测试
do
循环体
done
#第二种
while true #这里不一定写true,写:也可以,写true比较规范
do
循环体
done
#第三种
while read line #从文件中读取行
do
循环体
done < path.txt
#语法示例脚本
#将一个数字1-9升序打印出来
[root@shell01 scripts]# vim while-1.sh
#!/bin/bash
Num=1
while [ $Num -lt 10 ]
do
echo $Num
let Num++
done
2.while循环场景示例
1.创建10个不同日期的文件
[root@shell01 scripts]# vim while-2.sh
#!/bin/bash
a=20
while [ $a -lt 30 ]
do
date -s "2020/02/$a" &>/dev/null && touch $(date +%F).txt
if [ $? -eq 0 ];then
echo "$(date +%F).txt 创建成功! "
else
echo "$(date +%F).txt 创建失败! "
fi
let a++
done
ntpdate ntp.aliyun.com &>/dev/null #时间和阿里保持同步
2.while循环读入文件的方式,进行创建用户
[root@shell01 scripts]# vim user.txt
acc
abb
add
[root@shell01 scripts]# vim while-5.sh
#!/bin/bash
while read line
do
id $line &>/dev/null
if [ $? -eq 0 ];then
echo "用户${line}已经存在!无需再次进行创建!"
else
useradd $line &>/dev/null
if [ $? -eq 0 ];then
echo "用户${line}创建成功!"
else
echo "用户${line}创建失败!"
fi
fi
done < user.txt
#生成24位随机密码,要求由数字,大小写字母,特殊符号组成 (mkpasswd)
[root@shell01 scripts]# yum install -y expect
#-l长度 -d数字 -c小写字母 -C大写字母 -s特殊符号
[root@shell01 scripts]# mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6
3.随机猜数字游戏
1.随机一个1-100之间的数字
2.执行脚本时,提示用户输入一个数字
3.判断用户输入的数字是大还是小
4.猜错了,继续猜,猜对了退出
5.统计出总共失败多少次和总共猜了多少次
[root@shell01 scripts]# vim while-8.sh
#!/bin/bash
#1.产生一个属技术
Random=$(( RANDOM % 100 + 1 ))
a=0
echo "数字游戏"
while true
do
#2.提示用户输入一个1-100之间的数字
read -p "请输入一个[1-100]之间的数字:" Num
#3.判断数字是否是整数
if [[ ! $Num =~ ^[0-9]+$ ]];then
echo "你猜的数字不是一个整数!"
continue #跳出本次循环下面的命令,继续执行下次循环
fi
if [ ! $Num -gt 0 -o ! $Num -le 100 ];then
echo "你猜的数字不在1-100之间的范围!"
continue
fi
if [ $Num -gt $Random ];then
echo "猜大了"
elif [ $Num -lt $Random ];then
echo "猜小了"
else
echo "猜对了"
break
fi
let a++
done
echo "总共猜了$(( $a + 1 ))次!失败了${a}次!"