• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

Shell脚本编程学习——循环语句之until循环【显哥出品,必为精品】

Shell编程 lixian 4年前 (2020-05-06) 20620次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、循环语句之until循环概述

until在条件不成立时执行循环体,条件为真时,循环结束

1.格式

until [ 条件表达式 ]
do
done

二、抓阄脚本

1.业务需求

1. 执行脚本时,输入学生的英文名字,产生1-99之间的数字,数字越大的就去参加。前面如果出现过这个数字,下次就不能在去出现。不能出现相同的数字

2. 输入完名称之后,屏幕上方输出你的名字和数字

3. 脚本是无限循环 要有退出的命令

4. 退出之后显示出数字最高的三位同学

2.脚本代码

[root@xian /server/scripts]# cat chouqian.sh 
#!/bin/bash
# File Name: chouqian.sh
# Author: lixian
#######################
>name.txt
until ! true
do
    #产生随机数
    Ran=$(( $RANDOM % 99 + 1 ))
    Pd=$(grep -w "$Ran" name.txt)
    if [ $? -eq 0 ];then
        continue
    fi
    read -p " 请输入想要吃羊腿的名字: " Name
    if [ $Name == "gun" ];then
        break
    fi
    Rename=$(grep -w "$Name" name.txt)
    if [ $? -eq 0 ];then
        echo "你已经重复输入了这个名字,换个名字吧!"
        continue
    fi
    echo "${Name} : ${Ran}"
    echo "${Name}:${Ran}" >>name.txt

done
echo "下面请这三位同学去吃羊腿:"
cat name.txt |sort -t ":" -nrk2 |head -n3

3.执行结果

[root@xian /server/scripts]# sh chouqian.sh 
 请输入想要吃羊腿的名字: lx
lx : 86
 请输入想要吃羊腿的名字: lx
你已经重复输入了这个名字,换个名字吧!
 请输入想要吃羊腿的名字: jyc
jyc : 63
 请输入想要吃羊腿的名字: hj
hj : 52
 请输入想要吃羊腿的名字: xbj
xbj : 7
 请输入想要吃羊腿的名字: tbq
tbq : 92
 请输入想要吃羊腿的名字: lf
lf : 38
 请输入想要吃羊腿的名字: hb
hb : 91
 请输入想要吃羊腿的名字: djs
djs : 29
 请输入想要吃羊腿的名字: gun
下面请这三位同学去吃羊腿:
tbq:92
hb:91
lx:86

三、打印99乘法表

1.使用until循环

[root@xian /server/scripts]# cat until-99.sh 
#!/bin/bash
# File Name: 99.sh
# Author: lixian
#######################
a=1
until ! [ $a -le 9 ]
do
    for b in $(seq 1 $a)
    do
        echo -en "${b}x$a=$(($a*$b))\t"
    done
    let a++
    let b++
    echo ""
done
[root@xian /server/scripts]# sh until-99.sh 
1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
1x4=4	2x4=8	3x4=12	4x4=16	
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	
1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	
1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	
1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81	

2.使用for循环

[root@xian /server/scripts]# cat 99.sh 
#!/bin/bash
# File Name: 99.sh
# Author: lixian
#######################
for a in {1..9}
do
    for b in $(seq 1 $a)
    do
        echo -en "${b}x$a=$(($a*$b))\t"
    done
    echo ""
done
[root@xian /server/scripts]# sh 99.sh 
1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
1x4=4	2x4=8	3x4=12	4x4=16	
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	
1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	
1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	
1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81

四、内置跳出循环的指令

1. exit 退出整个脚本程序

2. break 结束当前循环, 跳出这个循环

3. continue 结束本次循环,继续执行下一次循环


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:Shell脚本编程学习——循环语句之until循环【显哥出品,必为精品】
喜欢 (1)

您必须 登录 才能发表评论!