shell脚本双循环案例详解(打印图形、乘法表)

一、九九乘法表

[root@client1 ~]# vi chengfabiao.sh
#!/bin/bash
for ((i=1;i<=9;i++))    //外循环控制输出的行数,九行
do
  for((n=1;n<=i;n++))   //内循环,控制每行的输出
    do
    echo -ne "$i*$n=$[i*n] \t"  // -ne代表不换行输出,支持转义字符\t
    done
echo
done
[root@client1 ~]# chmod +x chengfabiao.sh 
[root@client1 ~]# ./chengfabiao.sh 

执行结果
在这里插入图片描述

二、打印直角三角形

外层循环一次,内层循环完成全部循环,指导外层循环结束

#!/bin/bash
for ((i=1;i<=6;i++))  //外循环控制输出行数,即直角三角形的高
do
  for ((j=1;j<=i;j++))  //内循环次数由i控制,控制每行输出的长度,从1递增到6
  do
    echo -n "*"  //不换行输出,保证内层循环结束,输出的*在一行显示
  done
  echo   //内循环结束一次,输出一次空行,否则所有结果会在一行显示
done

执行结果
在这里插入图片描述

三、打印等腰三角形

内循环分成两部分同时进行打印,先打印空格,再打印*

#!/bin/bash
for ((i=1;i<=6;i++))   //等腰三角形的高
do
 for ((m=6;m>=i;m--))   //输出空格,由等腰三角形的形状,空格数递减
 do
   echo -n " "
 done
 for ((j=1;j<=i;j++))   //输出* ,保证下一行比上一行多出两个长度,所以输出的是*和空格
 do
  echo -n "* "
 done
 echo      //每输出一行空格和* ,输出一空行,否则所有结果会在一行显示
done

执行结果
在这里插入图片描述

四、打印等腰梯形

只需要在等腰三角形的基础上更改

#!/bin/bash
for ((i=1;i<=6;i++))
do
 for ((m=6;m>=i;m--))
 do
   echo -n " "
 done
 for ((j=1;j<=i+2;j++))     //等腰梯形的第一行输出的长度更长,用j<=i+2,第一行相较等腰三角形就会多输出两个*
 do
  echo -n "* "
 done
echo
done

执行结果
在这里插入图片描述

四、打印菱形

菱形可以看做是两个等腰三角形

#!/bin/bash
for ((i=1;i<=6;i++))    //打印菱形的上半部分,6行
do
 for ((j=5;j>=i;j--))   //先输出空格,递减
 do
   echo -n " "
 done
 for ((m=1;m<=i;m++))    //空格后输出* ,递增
 do
   echo -n  "* "
 done
 echo                   //输出一行空格和* 后输出空行
done
for ((i=1;i<=5;i++))    //打印菱形的下半部分,5行,和上半部分的输出相反
do
 for ((j=1;j<=i;j++))    //输出空格,递增
 do
  echo -n " "
 done
 for ((m=5;m>=i;m--))    //输出* 递减
 do
  echo -n "* "
 done
 echo
done

执行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41786285/article/details/108750292
今日推荐