shell脚本:使用for循环编写乘法口诀表

Nabila ·
更新时间:2024-09-21
· 690 次阅读

for循环编写乘法口诀表的几种方式,当做for循环语句练习即可
脚本1:

[root@linus ~]# cat test.sh #!/bin/bash for i in {1..9} do for o in `seq $i` do echo -n "$o*$i=$[$i*$o] " done echo done

执行效果:

[root@linus ~]# sh test.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

脚本2:

[root@linus ~]# cat test1.sh #!/bin/bash for((i=1;i<=9;++i)) do for((j=1;j<=i;j++)) do echo -ne "$j*$i=$((i*j))\t" done echo done

执行效果:

[root@linus ~]# sh test1.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

脚本3:

[root@linus ~]# cat test2.sh #!/bin/bash for o in `seq 1 9` do for i in `seq $o` do echo -n "$i*$o=$[$o*$i] " done echo done

执行效果:

[root@linus ~]# sh test2.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

在这里插入图片描述
首先echo -n是不换行的意思,避免以竖行的形式输出,那样不好看。
仔细看可以发现,不管是哪个脚本,都有在echo输出中末尾有个空格,或者是其代替符\t,然后又多了一个空白的echo,这都有什么用呢?

首先看看echo后面为什么加空格,我将空格去掉,再执行一下脚本,看看效果

[root@linus ~]# sh test2.sh 1*1=1 1*2=22*2=4 1*3=32*3=63*3=9 1*4=42*4=83*4=124*4=16 1*5=52*5=103*5=154*5=205*5=25 1*6=62*6=123*6=184*6=245*6=306*6=36 1*7=72*7=143*7=214*7=285*7=356*7=427*7=49 1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64 1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81

这样显示是不是不对,一点都不友好,字符都连一块儿了,这个空格的作用就是用于分割输出的,加上就是这样的。

[root@linus ~]# sh test2.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

为什么每个脚本里面都有一个单独的echo命令呢,我们把这个echo去掉试试。在test2中将echo去掉,然后再执行一次,看看显示的是什么。

[root@linus ~]# sh test2.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 [root@linus ~]#

九九乘法表,变成一串了,echo命令难道是排列吗,那怎么可能,直接使用echo命令是显示空行的,但那是在前面没有屏幕输出的情况下。

[root@linus ~]# echo

在空格前面有字符的话,会先把字符显示出来

[root@linus ~]# echo "test " test

后面看似什么都没有,其实是用空格填充的,使用终端的可以左键拉一下看看。

执行的脚本的时候,也是如此,首先,刚开始执行的乘法口诀表是从1乘到9,每行显示一次,也就是显示九行,把结果输出到屏幕,后续就开始从2开始乘起…依次排列,字符输出完后,剩余的部分就用空格填补。

echo命令的详细使用请转到===>https://blog.csdn.net/qq_42534026/article/details/103821939


作者:萎靡不振



for 乘法口诀表 shell脚本 shell for循环

需要 登录 后方可回复, 如果你还没有账号请 注册新账号