Shell阶段06 while循环, 示例, 随机密码mkpasswd
只要条件成立,就会反复执行循环语句,直到条件不成立时,才会退出。 语法 #第一种 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
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}次!"