Shell循环语句:for循环的三个示例



综合示例

例题1:数字累加脚本 (1 到 100 的累加)

  • 需求:编写脚本实现计算从1加到100的值

  • 思路

    1. 累加需要用到循环,已知循环次数时使用for循环
    2. 也可以使用while循环达到累加条件时结束循环
  • 脚本内容

    sum=0
    for i in {1..100}
    do
      sum=$(($sum + $i))  # 每次循环将i加到sum上
      #let sum=$i+$sum    # 二选一
    done
    echo "1到100的累加值为:$sum"
    
    # 或者
    
    sum=0
    for ((i=0;i<=100;i++))
    do
    sum=$[i+sum]
    done
    echo $sum
    

    执行结果:

    1到100的累加值为:5050
    

例题2:计算 1 到 100 的偶数和、奇数和

  • 脚本内容

    #!/bin/bash
    num1=0  # 偶数和
    num2=0  # 奇数和
    for i in {1..100}
    do
      if (( i % 2 == 0 )); then
        num1=$(($num1 + $i))
      else
        num2=$(($num2 + $i))
      fi
    done
    echo "偶数和:$num1"
    echo "奇数和:$num2"
    

例题3:循环打印 9x9 乘法表

  • 思路

    1. for循环打印一行9个*号
    2. 再添加一个for循环打印一个9行9列的*号正方形
    3. * 号正方形斜砍一般形成99乘法表的基本格式
    4. * 号99乘法表格式用乘法算式替换
  • 步骤

    1. for循环打印一行9个*号
    #!/bin/bash
    for i in {1..9}   #for循环9次从i=1开始
    do
    echo -n "*"       #每循环一次打印一个*,echo -n参数表示不换行
    done              #此for循环语句结束
    
    执行结果:
    *********
    
    1. 再添加一个for循环打印一个9行9列的*号正方形
    #!/bin/bash
    for  i  in  {1..9}    #添加打印列循环,循环9次从i=1开始  
    do                    #j循环时做do中的内容    
        for j in {1..9}   #第一步for循环内容不变
        do
        echo -n "*"
        done
    echo                  #列循环每循环一次进行换行
    done                  #列循环for语句结束标志
    
    执行结果:
    *********
    *********
    *********
    *********
    *********
    *********
    *********
    *********
    *********
    
    1. * 号正方形斜砍一般形成99乘法表的基本格式
    #!/bin/bash
    for i in {1..9}               #行循环内容不变  
    do                         
        for ((j=1; j<=i; j++))    
        # 修改行循环j的取值范围为展开变量j,
        # 即当j=1时i取值只有1,所以循环一次。
        # 当j=2时,i取值为1和2,所以i=1和i=2各循环一次,
        # 循环2次。以此类推到j=9
        do
        echo -n "*"
        done
    echo                   
    done                   
    
    执行结果:
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    
    1. * 号99乘法表格式用乘法算式替换
    #!/bin/bash
    for  i  in  {1..9}                  #列循环内容不变  
    do
        for ((j=1; j<=i; j++))
        do
        echo -ne "$i*$j=$[ $i*$j ]\t"   
        # 行输出内容修改为9*9算式和结果。
        # $[ ]表示计算里面的正整数结果,
        # echo -e参数表示调用转义符,
        # \t表示制表符即循环时输出一个tab键
        done
    echo                   
    done   
    
    输出结果:
    1*1=1	
    2*1=2	2*2=4	
    3*1=3	3*2=6	3*3=9	
    4*1=4	4*2=8	4*3=12	4*4=16	
    5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
    6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
    7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
    8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
    9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81
    

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值