shell 基本编程 打印菱形 三角形 乘法表

  1 #!/bin/bash
  2 #########################################################################
  3 # File Name     : print_start.sh
  4 # Author        : uc
  5 # Created Time  : 21 Sep 2016
  6 usage() {
  7     cat <<EOF
  8 
  9 EOF
 10 }
 11 
 12 
 13 main() {
 14 
 15     echo "请选择要打印的图形:"
 16     echo '#########################################'
 17     echo "1,99乘法表"
 18     echo "2,三角形"
 19     echo "3,菱形"
 20     echo "4,随机打印"
 21     echo '#########################################'
 22     echo ""
 23 
 24     read -r -p "输入要打印的图形:" difficulty
 25     case $difficulty in
 26         1)
 27             for ((i = 1; i < 10; i++))
 28             do
 29                for ((j = 1; j <= i; j++))
 30                do
 31                   echo -n "$j" '*' "$i ="  "$((i * j)) ";
 32                done
 33                echo ""
 34             done
 35             ;;
 36         2)
 37             for ((i = 1; i < 10; i++))
 38             do
 39                for ((j = 10; j > i; j--))
 40                do
 41                   echo -n " ";
 42                done
 43                for ((m = 1; m <= i; m++))
 44                do
 45                    echo -n "$i "
 46                done
 47                echo ""
 48             done
 49             ;;
 50         3)
 51             for ((i = 1; i < 12; i++))
 52             do
 53                 if [[ $i -le 6 ]]; then
 54                     for ((j = $((12-i)); j > i; j--))
 55                     do
 56                         echo -n " ";
 57                     done
 58                     for ((m = 1; m <= $((2*i-1)); m++))
 59                     do
 60                        #echo -n "$i "
 61                        echo -n "* "
 62                     done
 63                     echo ""
 64                 elif [[ $i -gt 6 ]]; then
 65                     n=$((12-i))
 66                     for ((j = $((12-n)); j > n; j--))
 67                     do
 68                         echo -n " ";
 69                     done
 70                     for ((m = 1; m <= $((2*n-1)); m++))
 71                     do
 72                        #echo -n "$i "
 73                        echo -n "* "
 74                     done
 75                     echo ""
 76                 fi
 77             done
 78             ;;
 79         4)
 80             random_no=$((RANDOM%10+10))
 81   
 82             read k 
 83             i=1
 84 
 85             while [ "$i" -le "$k" ]
 86             do
 87             let ban=k/2+1
 88 
 89                 if [[ $i -le $ban ]] 
 90                 then
 91                    j=1
 92                     while [ $j -le $(( ban - i)) ]
 93                     do
 94                         printf " "
 95                         let j++
 96                     done
 97 
 98                     n=1;
 99                     let xing=i*2-1
100                     while [ "$n" -le "$xing"  ]
101                     do
102                         printf "*"
103                         let n++
104                     done
105                     printf "
"
106 
107                 else
108                      j=1
109                     while [ $j -le $((i - ban)) ]
110                     do
111                         printf " "
112                         let j++
113                     done
114 
115                     n=1
116                     let xing1=k-i*2+ban*2
117                     while [ "$n" -le "$xing1"  ]
118                     do
119                         printf "*"
120                         let n++
121                     done
122                     printf "
"
123                 fi
124                 let i++
125             done
126             ;;
127         s)  
128             pn=$((RANDOM%10+10))
129              if [[ $((pn%2)) -eq 0 ]]; then
130                 pn=$((pn+1))
131             fi
132             hm=$(($((pn+1))/2))
133            
134            echo "$pn" "$hm"
135             for ((i = 1; i < pn; i++))
136             do
137                 if [[ $i -le $hm ]]; then
138                     for ((j = $((hm-i)); j > 0; j--))
139                     do
140                         echo -n " ";
141                     done
142                     for ((m = 1; m <= $((2*i-1)); m++))
143                     do
144                        #echo -n "$i "
145                        echo -n "*"
146                     done
147                     echo ""
148                 elif [[ $i -gt $hm ]]; then
149                     n=$((pn-i))
150                     for ((j = $((hm-n)); j > 0; j--))
151                     do
152                         echo -n " ";
153                     done
154                     for ((m = 1; m <= $((2*n-1)); m++))
155                     do
156                        #echo -n "$i "
157                        echo -n "*"
158                     done
159                     echo ""
160                 fi
161             done
162             echo "谢谢使用"
163             ;;
164         *)  
165             for ((i = 1; i < 12; i++))
166             do
167                 if [[ $i -le 6 ]]; then
168                     for ((j = $((12-i)); j > i; j--))
169                     do
170                         echo -n " ";
171                     done
172                     for ((m = 1; m <= $((2*i-1)); m++))
173                     do
174                        #echo -n "$i "
175                        echo -n "*"
176                     done
177                     echo ""
178                 elif [[ $i -gt 6 ]]; then
179                     n=$((12-i))
180                     for ((j = $((12-n)); j > n; j--))
181                     do
182                         echo -n "";
183                     done
184                     for ((m = 1; m <= $((2*n-1)); m++))
185                     do
186                        #echo -n "$i "
187                        echo -n "*"
188                     done
189                     echo ""
190                 fi
191             done
192             echo "谢谢使用"
193             ;;
194     esac
195 
196     case $random_no in
197         1 )
198             ;;
199     esac
200 }
201 
202 main "$@"
203 
204 exit 0
原文地址:https://www.cnblogs.com/enjoyco/p/5895377.html