Shell里教你画图形

Shell里教你画图形

  • 常用的命令
  • 画个正方形
  • 画个三角形
    • 画直角三角形
    • 画倒直角三角形
    • 画等腰三角形
  • 画一个菱形
  • 乘法口诀表

常用的命令

echo -n :不换行输出 
echo -e:支持反斜杠控制的字符转换
 转义:
\a:发出警告声
\b:删除前一个字符
\c:最后不加上换行符号
\f:换行但光标仍旧停留在原来的位置
\n:换行且光标移至行首
\r:光标移至行首,但不换行
\t:插入tab
\v:与\f相同
\\:插入\字符
\nnn:掺入nnn(八进制)所代表的ASCII字符           

seq的用法
seq  10  #起始默认是1,间隔默认是1,输出的结果(1-10)
seq  2  10  #起始值是2,间隔默认是1,输出的结果(2-10)
seq  1  3   10 #起始值是1,间隔默认是3,输出的结果:1 4 7 10 
  

画个正方形

[root@client3 ~]# vi fang.sh
[root@client3 ~]# sh fang.sh
#!/bin/bash
#用 * 号画一个正方形
for ((i=1;i<=5;i++))
do
  for ((j=1;j<=5;j++))
  do
    echo -n " *   "  ##(-n是不换行输出)因为每行之间有空格,所有每个*后面要加个“空格”,这样出来的图形才是方的
  done
  echo               ## 每行结束后
done
[root@client3 ~]# sh fang.sh
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * * 

画个三角形

画直角三角形

[root@client3 ~]# vi zj1.sh
#!/bin/bash
#画直角三角形
for ((i=1;i<=7;i++))
do
 for ((j=1;j<=i;j++))
 do
 echo -n "*"
 done
 echo
done
[root@client3 ~]# sh zj1.sh
*
**
***
****
*****
******
*******

画倒直角三角形

[root@client3 ~]# vi zj2.sh
!/bin/bash
# 画倒直角三角形
for ((i=1;i<=7;i++))
do
 for ((j=1;j<i;j++))
 do
 echo -n " "
 done
  for((m=8-i;m>0;m--))
  do
  echo -n "*"
  done
echo
done
[root@client3 ~]# sh zj2.sh
*******
 ******
  *****
   ****
    ***
     **
      *

画等腰三角形

[root@client3 ~]# vi dy.sh
#!/bin/bash
#画一个等腰三角形
for ((i=1;i<5;i++))
do
 for ((j=5;j>=i;j--))
 do
 echo -n " "
 done
   for ((k=1;k<=i;k++))
   do
   echo -n "* "              ## *号后面有空格
   done
echo
done

[root@client3 ~]# sh dy.sh
     * 
    * * 
   * * * 
  * * * *

画一个菱形

[root@client3 ~]# vi lx.sh
#!/bin/bash
#画一个菱形
read -p "请输入菱形长度:" len
for i in `seq 1 $len` #输出菱形上半部分
do
 for ((j=$len-1;j>=$i;j--))
 do
 echo -n " " #打印空格对齐图案
 done
 for ((m=1;m<=$i;m++))
 do
 echo -n "* "
 done
echo
done
for i in `seq 1 $len` #输出菱形下半部分(下半部分要比上半部分少一行)
do
 for ((j=1;j<=$i;j++))
 do
 echo -n " " #打印空格对齐图案
 done
 for ((n=$len-1;n>=$i;n--))
 do
 echo -n "* "  #
 done
echo
done
[root@client3 ~]# sh lx.sh
请输入菱形长度:8
       * 
      * * 
     * * * 
    * * * * 
   * * * * * 
  * * * * * * 
 * * * * * * * 
* * * * * * * * 
 * * * * * * * 
  * * * * * * 
   * * * * * 
    * * * * 
     * * * 
      * * 
       * 

乘法口诀表

[root@client3 ~]# vi kjb.sh
[root@client3 ~]# si kjb.sh 
#!/bin/bash
#9*9乘法表
for ((i=1;i<=9;i++))
do
 for ((j=1;j<=i;j++))
 do
 echo -ne "$i*$j=$((i*j)) \t"   ##用"-e"支持"\t"的转义:插入tab
 done
echo
done
[root@client3 ~]# sh kjb.sh 
1*1=1 	
2*1=2 	2*2=4 	
3*1=3 	3*2=6 	3*3=9 	
4*1=4 	4*2=8 	4*3=12 	4*4=16 	
5*1=5 	5*2=10 	5*3=15 	5*4=20 	5*5=25 	
6*1=6 	6*2=12 	6*3=18 	6*4=24 	6*5=30 	6*6=36 	
7*1=7 	7*2=14 	7*3=21 	7*4=28 	7*5=35 	7*6=42 	7*7=49 	
8*1=8 	8*2=16 	8*3=24 	8*4=32 	8*5=40 	8*6=48 	8*7=56 	8*8=64 	
9*1=9 	9*2=18 	9*3=27 	9*4=36 	9*5=45 	9*6=54 	9*7=63 	9*8=72 	9*9=81	

你可能感兴趣的:(shell)