跳出循环 break和continue

在我们使用循环语句进行循环的过程中,有时候需要在未达到循环结束条件时强制跳出循环,那么Shell给我们提供了两个命令来实现该功能:break和continue

break和continue

Break:跳出整个循环

Continue:跳过本次循环,进行下次循环

break概述:跳出当前整个循环或结束当前循环,在for、while等循环语句中,用于跳出当前所在的循环体,执行循环体之后的语句,后面如果什么也不加,表示跳出当前循环等价于break 1,也可以在后面加数字,假设break 3表示跳出第三层循环

continue概述:忽略本次循环剩余的代码,直接进行下一次循环;在for、while等循环语句中,用于跳出当前所在的循环体,执行循环体之后的语句,如果后面加的数字是1,表示忽略本次条件循环,如果是2的话,忽略下来2次条件的循环

互动:先演示一下效果,让大家思考一下,这个脚本的思路,然后我再带着你去写脚本。

例1:写一个shell菜单,当按数字键4时退出,否则一直循环显示

[root@xuegod63 ~]# vim break-continue.sh

#! /bin/sh

while true

do

echo "*******************************"

echo "Please select your operation:"

echo " 1 Copy"

echo " 2 Delete"

echo " 3 Backup"

echo " 4 Quit"

echo "*******************************"

read op

 case $op in

    1)

continue    #这里加了continue后,后面的echo命令就不执行了,进行下一次while循环

echo "your selection is Copy"

;;

    2)

      echo "your selection is Delete"

;;

    3)

echo "your selection is Backup"

;;

    4)

echo "Exit ..."

break    #跳出循环体

;;

     *)

  echo "invalide selection,please try again"

  esac

done

例2:使用交互式方法批量添加用户 

[root@xuegod63 ~]# cat adduser.sh 

#!/bin/bash

while :

do

read -p "Please enter prefix & password & num:" pre pass num

printf "user information:

*********************

user prefix:   $pre

user password: $pass

user number:   $num

********************

"

read -p "Are you sure?[y/n] " action

if [ "$action" == "y" ];then

break    #确认输入将跳出while循环体开始执行for循环体

fi

done

for i in $(seq  $num)    # 从i =1开始,取到 $num  。 seq 表示 1-$num  

do

user=${pre}${i}

id $user &> /dev/null

if [ $? -ne 0 ];then

useradd $user

echo "$pass"|passwd --stdin $user &> /dev/null

if [ $? -eq 0 ];then

echo -e "\033[31m$user\033[0m created"   #以红色来显示用户名

fi

else

echo "user $user exist"

fi

done

扩展: seq命令: seq命令用于产生从某个数到另外一个数之间的所有整数。

[root@xuegod63 ~]# seq 5   #输出 1-5的数字

1

2

3

4

5

版权声明:
作者:WaterBear
链接:https://l-t.top/1634.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>