shell脚本—小练习之99乘法表

零碎碎的知识点

  1. echo
    echo -n :取消换行
    echo -e :启用反斜杠转义的解释
    \t:横向制表
    \v:纵向制表
  2. shell脚本 for循环嵌套语法
  for  i(变量)  in { 参数a..参数b}
           do 
           for j(变量)  in {参数c..参数d}
           do   
           任务
           done
           done

思路?????

步骤一:
99乘法表中开始为1x1=1,最后的值为 9x9=81,所以需要两个变量i,j。且i和j的值由1都变为i,并且做了乘法运算。

#!/bin/bash
#99
for i in {1..9}
do
    for  j in {1..9}
    do
       echo  "$i*$j=$[i*j]"
    done
done

在这里插入图片描述执行结果,不是我们想要的。首先运算结果上有很多冗余数据,其次显示视图不符合要求。
步骤二:删除冗余数据
分析可知,冗余数据出现在每次i都循环了9次。如果使得j<=i时,便不会出现冗余数据

#!/bin/bash
#99
for i in {1..9}
do
    for  j in {1..9}
    do

       if [ $j -le $i ];then
       echo  "$j*$i=$[i*j]"
       fi
    done
done 

在这里插入图片描述
由执行结果可以看出,冗余数据已经被删除。但是结果并未分为9行。
步骤三:分行处理,只需要在内层循环结束时,输出一个空行。

#!/bin/bash
#99
for i in {1..9}
do
    for  j in {1..9}
    do

       if [ $j -le $i ];then
       echo  "$j*$i=$[i*j]"
       fi
    done
echo
done

在这里插入图片描述由图可知,目前分行已经基本ok,但是我们希望每一列数能单独在一行,而不是分为好几行。
步骤四:取消每次循环换行 echo -n

#!/bin/bash
#99
for i in {1..9}
do
    for  j in {1..9}
    do

       if [ $j -le $i ];then
       echo -n  "$j*$i=$[i*j]"
       fi
    done
echo
done

在这里插入图片描述由图可知,基本上已经实现了我们的需求。但是看起来仍不太美观。
步骤五:echo -e \t。加入制表符,使结果更加美观。空格也可以,但是会出现不能对齐的效果。

#!/bin/bash
#99
for i in {1..9}
do
    for  j in {1..9}
    do

       if [ $j -le $i ];then
       echo -n  -e  "$j*$i=$[i*j]\t"
       fi
    done
echo
done

在这里插入图片描述至此我们的99乘法表制作完成,谢谢观看。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐