本文介绍: 本文基于Linux上CentOS 7 版本进行演示Linuxshell脚本多种方法(循环)打印九九乘法表一.for语句双重循环二.for语句c写法双重循环三.while双层循环四.while单层循环

本文基于Linux上CentOS 7 版本进行演示

目录

一.for语句双重循环

二.for语句类c写法双重循环

三.while双层循环

四.while单层循环


一.for语句双重循环

for双重循环主要思路

利用seq输出连续数字1-9,外层循环控制乘数i的循环,内层循环控制被乘数j的循环

内层循环根据外层循环的提供的数值进行循环

直到内层循环的j和外层的i的值相等结束一次内层循环并换行进入一次循环

#!/bin/bash
for i in `seq 9`
        do
                for j in `seq $i`
                        do
                                printf "$j*$i=%2d " $((j*i))      
                                #echo -n "$j*$i=$((j*i)) "
                                #为了美观调换i和j位置
                        done
                        echo ""      #换行
        done
[root@sulibao sh]# bash chengfabiao.sh 
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

二.for语句c写法双重循环

括号内三个表达式

第一个表达式指赋予初始值第二个表达式指循环条件第三表达式指循环自增或自减

执行顺序表达式1—表达式2—循环体—表达式3—表达式2+表达式3—直到表达式2不成立停止

#!/bin/bash
for((i=1;i<10;i++))
        do
                for((j=1;j<=$i;j++))
                        do
                                printf "$j*$i=%2d " $((j*i))
                                #echo -n "$j*$i=$((j*i)) "
                        done
                        echo ""
        done
[root@sulibao sh]# bash chengfabiao.sh 
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

三.while双层循环

在循环外赋乘数i初值,循环内赋被乘数j初值

j根据i的取值条件进行循环打印,内层本次循环完后换行后乘数自加进入下一次循环

#!/bin/bash
i=1
while ((i<10))
        do
                j=1
                while ((j<=i))
                        do
                                printf "$j*$i=%2d " $((j*i))
                                let j++
                        done
                        echo ""
                        let i++
        done
[root@sulibao sh]# bash chengfabiao.sh 
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

四.while单层循环

循环外为乘数i和被乘数j赋初值,循环内使用if控制乘数与被乘数的值大小关系

被乘数小于等于乘数时执行循环体,一旦被乘数大于乘数后乘数进行自加换行并再次为被乘数赋初值

#!/bin/bash
i=1;j=1
while ((i<10))
        do
                if ((j<=i))
                then
                        printf "$j*$i=%2d " $((j*i))
                        let j++
                else
                        let i++
                        echo ""
                        j=1
                fi
        done
[root@sulibao sh]# bash chengfabiao.sh 
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

原文地址:https://blog.csdn.net/weixin_64334766/article/details/128924168

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34866.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注