咱们在编写菱形的时候我们要先弄清除它的结构,菱形是正三角形和倒三角形组合在一起就是一个菱形,如下面图(1)
这是一个正三角形,小编把这正三角形划分成了俩个直角三角形,已经红色圈出了。
先看左半边的三角形,先看最上面一层,然后达到这样的显示呢?说白了就是前面九个空格,然后填写了一个数字9,第二层8个空格然后写俩个88,第三次7个空格写777一直循环下去。右半边也是如此,只是有点需要注意右边第二层开始每层数字比左边数字少一,倒三角也是如此,只是把顺序颠倒了一下。那么小编简单的介绍了一下思路,下面开始进行实操!!!
[root@localhost opt]# vi ling.sh // 编写一个shell文本
#!/bin/bash
zheng() { // 这边是编写一个正三角形的函数
for ((i=9; i>0; i--)) // for循环 这里是一个轮数的循环,可以循环9次,每次循环减1
do
for ((a=1; a<=$i; a++)) // 这里面嵌套了for循环, 这边的意思是a的初始值等于1,a小于等于$i的情况下条件成立,每次循环减1.(小编简单的描述一下程序运行的过程,这边a的值跟$i是息息相关的,那么第一i等于9,到达这边for循环的时候,因为a的初始值是1,a<=$i,所以条件成立,等到下次循环的时候i=8,因为每次循环i都是减1,那这边a=2,因为每次循环a加一,像这样一直循环下去)
do
echo -n " " // -n是不换行输出,“ ”这是代表空格的意思,也就是不换行输出空格
done // 第二个for循环结束了
for ((b=9; b>=$i; b--)) //b的初始值等于9,b>=$i,每次循环减1
do
echo -n "$i" //不换行输出$i
done // 结束这个循环
for ((c=8; c>=$i; c--)) // c的初始值等于8,c>=$i的情况下条件成立,每次循环减1
do
echo -n "$i" // 不换行输出 $i(右半边的每次的数字)
done
echo ""
20 done
21 }
22
23
24 dao() { // 这边是写倒三角的函数
25 for ((i=2; i<=9; i++)) // 为什么这边初始值是2,因为正三角和倒三角连接处有一层是重合的,为了避免,初始值直接从2开始
26 do
27 for ((a=1; a<=$i; a++))
28 do
29 echo -n " " 空格 // 不换行输出空格
30 done
31 for ((b=9; b>=$i; b--))
32 do
33 echo -n "$i" // 这边是输出变量i的数字
34 done
35 for ((c=8; c>=$i; c--)) // 这边的for循环是写的倒三角右半边的数值
36 do
37 echo -n "$i" //不空行写变量$i
38 done
39 echo ""
40 done
41 }
42
43 zheng // 调用正三角函数
44 dao //调用倒三角函数
45
[root@localhost opt]# chmod +x ling.sh //给文本一个执行的权限
[root@localhost opt]# ./ling.sh //执行的结果如下