shell脚本编程之循环

 在实际工作中,经常会遇到某项目需要多次执行的情况,命令都是相同的。当面对各种列表重复执行任务时,使用简单的if语句很难满足要求,并且顺序编写全部代码更是显得异常繁琐,这时候就可以使用for循环语句,可以很好的解决这样的问题。

循环的定义

循环是指依赖某一个条件的限制,对一串逻辑性代码,进行反复性的操作,直到能够满足预期结果进行结束循环。如果没有预期结果,不间断执行,我们称之为“死循环” 。与循环有关的三个专业性名词:遍历,迭代,递归

一、循环语句

1、for循环语句

使用 for 循环语句时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。

for 循环语句的语法结构如下:

##第一种语法
for i in {词语列表}
do
命令序列
done
 

##第二种语法
for((i=1;i<=10;i++))  #for((定义变量并赋值;决定循环范围;决定循环变量如何改变))
do
命令序列
done

2  while循环

 使用 while 循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。但是在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。

while [ 判断 ]  ##条件成立继续循环,条件不成立,不再循环
do
命令序列
let i++         ##类似的语句
done

3  until循环

重复测试某个条件,只要条件不成立则反复执行

until [ 判断 ]  ##条件不成立执行循环,条件成立则不再继续执行
do
命令序列
let i++         ##也可不是这种,就是会让时间循环起来的条件
done

二、双重循环

1、双重循环的理解 

 对于一些重复性动作我们可以用单层循环来满足重复性操作的需求,当这些重复性操作有了别的分支操作时,便不是一个变量就能够解决问题,所以我们要再引入一层循环,让操作的输出结果更见详细化或者是通过一个脚本满足更为复杂的循环需求

演示:

#!/bin/bash
 
#双重循环的演示

 
for ((i=1;i<=6;i++))
do
  echo "=============这是外部循环执行的第 $i 次==================== "
    for  ((a=1;a<=3;a++))
      do
            echo  "这是内部循环执行的第 $a 次" 
   
      done
 
done

实验:        累加1到100 

for循环

1、

2、

while循环

until循环

实验 

for

for i in {词语列表}
do
命令序列
done

一、运用演示1:列表打印一份一到十的数字列表

#!/bin/bash
 
for i in {1..10}  #取值范围
do                #do
echo $i           #循环i
done              #done

 

运用演示2:分类打印打印一份 0-10以内的奇数列表

[root@localhost xunhuan]#for i in {1..10..2}
> do
> echo $i
> done

运用演示3:累加求和 求从1加到10的和 

[root@localhost xunhuan]#num=0
[root@localhost xunhuan]#for i in {1..10}
> do
> num=$[num+i]
> done
[root@localhost xunhuan]#echo $num
55

while循环

猜价格游戏
  • 通过变量RANDOM获得随机数,提示用户猜测并记录次数,猜中后退出循环

 

#!/bin/bash
#猜价格游戏
qwe=$[RANDOM % 100]
a=0
while [ $a -eq 0 ]   #等于0 一直循环

do
        read -p "请输入你猜的价格(0-99):" num
        if [ $num -eq $qwe ]
        then
                echo "恭喜你猜对了!"
                let b++
#b++用来统计猜的次数
                let a++
#a++代表正确后退出循环
        elif [ $num -lt $qwe ]
        then
                echo "猜低了,继续猜"
                let b++
        elif [ $num -gt $qwe ]
        then
                echo "猜高了,继续猜"
                let b++
        fi
done
echo "你一共猜了$b 次"

until循环

重复测试某个条件,只要条件不成立则反复执行 基本上while能干的事情,until也能干

#!/bin/bash
#求50以内的和
a=0
sum=0           #定义初值

until [ $a -gt 50 ]  #大于50为假

do
        sum=$[sum + a]
        let a++        #得出值,并迭代

done
        echo "50以内的和: $sum "

三、退出循环

shell脚本常用的循环语句有三种:exit   continue   break 

正常的循环情况下for循环和while循环是只要条件符合就会一直循环下去,而until循环是只要条件不成立,就会一直循环。但是有时我们利用循环并不想要循环输出的全部结果,只需要它的一部分结果时,这时便引入了结束语句来帮助我们获取指定范围内的循环输出结果,或者是让原本的死循环合理退出

1)break 的默认作用是退出单层循环

#!/bin/bash
#双层循环测试
for ((i=1;i<=5;i++))
    do                        #外层循环
        echo "============外循环第 $i 次============"
        for ((a=1;a<=5;a++))
            do                #内层循环
              echo "=======内循环第 $a 次=======" 
              break
            done
    done

2)exit的默认作用时直接结束脚本进程,到此代表着脚本的结束

表示0-100的奇数和偶数的方式

使用花括号:奇数{1..100..2} 偶数{0..100..2}

使用for循环:奇数((i=1;i<=100,i+=2));偶数((i=0;i<=100,i+=2))

  • 33
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值