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

三种方式

    • 脚本1
    • 脚本2
    • 脚本3
    • 解读

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 

解读

shell脚本:使用for循环编写乘法口诀表_第1张图片

仔细看可以发现,不管是哪个脚本,都有在echo输出中末尾有个空格,或者是其代替符\t,然后又多了一个空白的echo,这都有什么用呢?

首先echo -n是不换行的意思,避免以竖行的形式输出,那样不好看。

然后看看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

你可能感兴趣的:(shell脚本)