自动化运维必备之Shell脚本的循环语句,超详细讲解!

Shell编程之循环语句



前言


1. for循环

  • for循环经常使用在已经知道要进行多少次循环的场景

语法:

for  变量名  in  取值列表
do
	命令序列
done

3. while循环和until循环

  • while循环可以不断的执行某个程序,直到用户设置的条件完成为止,所以重点是条件,这种不定循环最常见的就是下面这两种格式了。

格式:

while循环:while的中文是【当…时】,所以这种方式说的是,当判断式/命令序列的条件成立时,就进行循环,直到命令序列/程序段落的条件不成立才停止。

while  [ 条件测试操作 ]
do						#do代表循环的开始
	判断式/命令序列
done 					#done代表循环的结束

until循环:这种方式恰恰和while循环相反,它指的是当判断式/命令序列的条件成立时,就终止循环,否则就会持续循环程序段落。

until  [ 条件测试操作 ]
do
	判断式/命令序列
done

2.实例

使用while完成猜数字游戏(0到1000之间的整数),可以通过RANDOM获取随机数,猜对结束,猜错继续。

#!/bin/bash

r_num=$[$RANDOM%1000]			<------生成随机数
count=0							<------用于记录输入次数,初始为0	
while true						<------使用不定循环while,(while true代表一直循环)
do
        read -p "请输入一个数字:" user_num	<------提示用户输入数字
        if [ $user_num -eq $r_num ]			<------如果判断成功然后执行下面的语句
        then
                echo 恭喜你猜对了!
                break						<------break可以跳出循环,后面再详细讲解
        elif [ $user_num -gt $r_num ]		<------输入小了进行提示
        then
                echo 你输入的数字太大了!
        else
                echo 你输入的数字太小了!		<------输入大了进行提示
        fi
        let count++							<------每输入一次将conut的值+1
done
        echo 你输入次数为:$count				<------统计的总数

实例:用户输入yes或者no的时候可以退出,否则会一直循环下去

#!/bin/bash

until [ "${yn}" == "yes" -o "${yn}" == "no" ]	<------条件为输入yes或者no,然后退出循环
do
        read -p "请输入yes执行程序/no停止程序: " yn	<------指定的代码块
done
~     

4. 嵌套循环

  • 在循环内部再使用一个循环称为嵌套循环

格式:

#!/bin/bash
for ((i=1;i<5;i++))
do
        echo${i}为外部循环
        for((j=1;j<4;j++))
        do
                echo -e "\t${j}为内部循环"
        done
done

5. 循环语句中的break、exit和continue

5.1 break的使用

  • 当满足条件的情况下break会跳出当前循环体,如下:
#!/bin/bash
for ((i=1;i<5;i++))
do      
        echo${i}为外部循环
        for((j=1;j<4;j++))
        do
            if [ $j -eq 3 ]			<------如果j的值为3
            then
                break				<------跳出当前循环(内部)
            fi  
        echo -e "\t${j}为内部循环"
        done
done

5.2 exit的使用

  • 当满足条件的情况下exit会直接退出当前脚本,如下:
#!/bin/bash
for ((i=1;i<5;i++))
do
        echo${i}为外部循环
        for((j=1;j<4;j++))
        do
            if [ $j -eq 3 ]					<------如果j的值为3
            then
                exit						<------结束当前脚本
            fi
        echo -e "\t${j}为内部循环"
        done
done

5.3 continue的使用

  • continue中止某次循环中的命令,但不会完全中止整个命令,如下:
#!/bin/bash
for ((i=1;i<5;i++))
do
        echo${i}为外部循环
        for((j=1;j<4;j++))
        do
            if [ $j -eq 2 ]		<------如果j的值为2
            then
                continue		<------中止循环中本次的命令,但不会完全中止整个循环或脚本
            fi
        echo -e "\t${j}为内部循环"
        done
done

总结

猜你喜欢

转载自blog.csdn.net/weixin_55609819/article/details/120279205
今日推荐