栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell脚本-----99乘法表过程解析

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell脚本-----99乘法表过程解析

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乘法表制作完成,谢谢观看。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/512552.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号