【前言】
练习shell,提高逻辑能力。
【脚本】
三角形与菱形均通过几个for循环实现,当然也可以用while。
下面是脚本内容:
[三角形]
#!/bin/bash read -p "please input the longs:" long for((i=1;i<=$long;i++)) do for((j=$long;j>i;j--)) #控制空格输出 do echo -n " " done for m in `seq 1 $i` #输出所在行数相同的数字个数,如在第三行,就输出3个3 do echo -n "$i" done #for((n=1;n<i;n++)) for n in `seq 2 $i` #输出所在行数减一的数字个数,如在第三行,就输出2个三 do ##这连个for循环可以整合到一块,实现每行输出(2*所在行数-1)个数字 echo -n "$i" done echo "" done
执行后的效果图:
若将上述脚本内层的两个for循环内"echo -n "$i""的$i换为*后,再次执行脚本效果如下:
[菱形]
#!/bin/bash read -p "please input the longs:" long for((i=1;i<=$long;i++)) #图形上半部分 do for((j=$long;j>i;j--)) do echo -n " " done for m in `seq 1 $i` do echo -n "*" done #for((n=1;n<i;n++)) for n in `seq 2 $i` do echo -n "*" done echo "" done for((i=2;i<=$long;i++)) #图形下半部分 do for ((j=1;j<i;j++)) do echo -n " " done let k=$long+1-$i for m in `seq 1 $k` do echo -n "*" done for ((n=1;n<k;n++)) #for n in `seq 2 $k` do echo -n "*" done echo "" done
改进后:
#!/bin/bash read -p "please input the longs:" long for((i=1;i<=$long;i++)) #控制行数 do for((j=$long;j>i;j--)) #控制空格输出 do echo -n " " done let "g=2*i-1" for m in `seq 1 $g` #控制*数量 do echo -n "*" done echo "" done for((i=2;i<=$long;i++)) #控制行数 do for ((j=1;j<i;j++)) #控制空格输出 do echo -n " " done let "k=2*(long-i)+1" for m in `seq 1 $k` #控制*数量 do echo -n "*" done echo "" done
执行后的效果图:
时间: 2024-11-03 20:46:25