1. 程式人生 > 其它 >shell編輯顯示形狀格式(99乘法表,三角,梯形,平行四邊形,菱形等)

shell編輯顯示形狀格式(99乘法表,三角,梯形,平行四邊形,菱形等)

技術標籤:shell

99乘法表

#!/bin/bash
  for ((a=1; a<=9; a++))         ----從1行開始排行數每次遞增1行直到9行
  do
   for ((b=1; b<=$a; b++))     ----從第一行開始保留1個位,然後每行遞增1個位,直到保留9個位,因為b<=a所以最大就是9位
   do
    c=$[$a*$b]  -----計算乘法公式
    echo -n "$a*$b=$c"  -----輸出結果資訊,之後會以此進行排列
  done
    echo ""

done

執行

[[email protected] opt]# . yyy11.sh 
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
4*1=44*2=84*3=124*4=16
5*1=55*2=105*3=155*4=205*5=25
6*1=66*2=126*3=186*4=246*5=306*6=36
7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

可以發現雖然排列出來了但是橫排之間還是比較混亂
加上-e和\t轉義符進行橫向排版
在這裡插入圖片描述
在這裡插入圖片描述

使用"*"符號製作各種形狀圖

矩形

#!/bin/bash

for ((a=1; a<=9; a++))  ------從1行開始排行數每次遞增1行直到9行
  do
 for ((b=1; b<=9; b++))   ------所有行都會是9個
   do
    echo -n "*"
   done
    echo ""
done

執行

[[email protected] opt]# . yyy12.sh 
*********
*********
*********
*********
*********
*********
*********
*********
*********

直角三角形

#!/bin/bash

for ((a=1; a<=9; a++))    ----從1行開始排行數每次遞增1行直到9行
   do
  for ((b=1; b<=a; b++))  ----從第一行開始保留1個位,然後每行遞增1個位,直到保留9個位,因為b<=a所以最大就是9位
   do
     echo -n "*"   -----這裡表示輸出符號"*"

   done
     echo " "
done

執行

[[email protected] opt]# . yyy6.sh 
* 
** 
*** 
**** 
***** 
****** 
******* 
******** 
********* 

倒直角三角形

#!/bin/bash

for ((a=1; a<=9; a++))
do
  for ((b=9; b>=a; b--))   -----將此處反過來寫,由多到少,9位~1位
  do
    echo -n "*"
  done
    echo "" 

done

執行

[[email protected] opt]# . yyy5.sh 
*********
********
*******
******
*****
****
***
**
*

反直角三角形

#!/bin/bash

for ((a=1; a<=9; a++))  -----還是需要先設定變數及範圍
do
  for ((b=9; b>=$a; b--))   -----建立一個透明的正直三角
  do
    echo -n " "    -----此處空大概為透明的意思
  done

  for ((c=1; c<=$a; c++)) ----之後由低到高輸出排列符號"*"
  do
    echo -n "*" 
  done
    echo ""


done

執行

[[email protected] opt]# . yyy7.sh 
         *
        **
       ***
      ****
     *****
    ******
   *******
  ********
 *********

等腰三角形

#!/bin/bash

for ((a=1; a<=9; a++))
do
  for ((b=9; b>=$a; b--))
  do
    echo -n " "
  done

  for ((c=1; c<=$a; c++))
  do
    echo -n "*" 
  done


  for ((d=2; d<=$a; d++))   ------在反直角的基礎上新增一個正直三角,但是注意要少一個格子,因為這樣才能讓三角尖頭位一個符,也就是多退一位將1改成2
  do
    echo -n "*"
  done
    echo ""
done

執行

[[email protected] opt]# . yyy8.sh 
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************

平行四邊形

#!/bin/bash

for ((a=1; a<=9; a++))
  do
 for ((b=9; b>=$a; b--))
   do
    echo -n " "
  done
 for ((c=1; c<=$a; c++))
   do
     echo -n "*"
   done
  for ((d=8; d>=$a; d--))  ----比反直角的基礎上新增一個倒直三角,並且也要退一格,由9變為8,不然會造成突出形狀
    do
     echo -n "*"
    done
   echo ""

done

執行

[[email protected] opt]# . yyy9.sh 
         *********
        *********
       *********
      *********
     *********
    *********
   *********
  *********
 *********

梯形

#!/bin/bash

for ((a=1; a<=9; a++))
  do
  for ((b=9; b>=a; b--))
   do
    echo -n " "
   done
  for ((c=1; c<=a; c++))
   do
    echo -n "*"
   done
  for ((d=1; d<=9; d++))  -----在反直角上多加一個矩形就行
   do
    echo -n "*"
   done
    echo ""
done

執行

[[email protected] opt]# . yyy10.sh 
         **********
        ***********
       ************
      *************
     **************
    ***************
   ****************
  *****************
 ******************

等腰梯形


#!/bin/bash

for ((a=1; a<=6; a++))
  do
   for ((b=6; b>=$a; b--))
    do
     echo -n " "
    done
   for ((d=1; d<=$a; d++))
    do
     echo -n "*"
    done
   for ((c=1; c<=6+$a; c++))  ----在反直角上多加一個矩形和正直三角,這裡可以兩個一塊程式設計,很方便,多加一個c<=後的引數就行
    do
     echo -n "*"
    done

     echo ""
done


執行

[[email protected] opt]# . yyy13.sh 
      ********
     **********
    ************
   **************
  ****************
 ******************

菱形

#!/bin/bash

for ((a=1; a<=9; a++))
 do
  for ((b=9; b>=$a; b--))
   do
    echo -n " "
   done
  for ((c=1; c<=$a; c++))
   do
    echo -n "*"
   done
  for ((d=2; d<=$a; d++)) ------先將等腰三角形做出
   do
    echo -n "*"
   done
    echo ""
done    ----結束此次迴圈

-----接著下一次迴圈
for ((e=1; e<=10; e++))   -----需要重新定義變數和範圍
do
 for ((f=0; f<=$e; f++))      ------先建立倒立正空三角,然後建立反的直三角,注意這裡f要由1改成0,要退一格,否則會不堆對稱
   do
    echo -n " "
   done
  for ((g=8; g>=$e; g--))
   do
    echo -n "*"
   done
  for ((h=7; h>=$e; h--)) ------最後再建立一個倒立正三角,注意這裡也要將h改為7,因為之前的反直三角已經佔了一個尖頭的位置,所以需要退一格
   do
    echo -n "*"
     done
    echo  ""
 done

執行

[[email protected] opt]# . yyy14.sh 
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *