1.列印 ***** ;
line="";ch="\x2a" # "\x2a"表示星號*
for((i=0;i<5;i++));do
line=$line$ch
done
echo -e $line
2.列印 5*5矩形
for((j=0;j<5;j++));do
line="";ch="\x2a"
for((i=0;i<5;i++));do
line=$line$ch
done
echo -e $line
done
3.四種等腰直角三角形
直角在左下
for((y=0;y<5;y++));do
line="";ch="\x2a"
for((x=0;x<=y;x++));do # 看斜線的座標
line=$line$ch
done
echo -e $line
done
直角在左上
for((y=0;y<5;y++));do
line="";ch="\x2a"
for((x=0;x+y<5;x++));do # 看斜線的座標
line=$line$ch
done
echo -e $line
done
直角在右上
for((y=0;y<5;y++));do
line="";ch="\x20" # \x20是空格符
for((x=0;x<5;x++));do
if((x==y));then # 當x=y後,空格由星號替代
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
done
直角在右下
for((y=0;y<5;y++));do
line="";ch="\x20"
for((x=0;x<5;x++));do
if((x+y==4));then #過斜線以後 空格由星號替代
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
done
4.等腰三角形
for((y=0;y<5;y++));do
line="";ch="\x20"
for((x=0;x-y<5;x++));do # 控制右邊界
if((x+y==4));then # 控制左邊界
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
done
5.等腰三角形(距左一定距離)
left=40;right=40 #左邊界頂點位置與右邊界頂點位置
for((y=0;y<5;y++));do
line="";ch="\x20"
for((x=0;x<=right;x++));do
if((x==left));then
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
((left--));((right++)) #控制幅度 也可以寫成left-=n;
done
6.等腰梯形
left=35;right=45 #等腰三角形左右邊界頂點位置不同則變成了等腰梯形
for((y=0;y<5;y++));do
line="";ch="\x20"
for((x=0;x<=right;x++));do
if((x==left));then
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
((left--));((right++))
done
7.普通三角形(或普通梯形,只需修改left與right不等)
left=40;right=40;ldlt=-2;rdlt=4 #ldlt rdlt 可以理解成左右邊界的斜率
for((y=0;y<5;y++));do
line="";ch="\x20"
for((x=0;x<=right;x++));do
if((x==left));then
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
((left+=ldlt));((right+=rdlt))
done
8.平行四邊形
left=40;right=50;ldlt=-4;rdlt=-4
for((y=0;y<5;y++));do
line="";ch="\x20"
for((x=0;x<=right;x++));do
if((x==left));then
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
((left+=ldlt));((right+=rdlt))
done
9.菱形
left=40;right=40;ldlt=-3;rdlt=3;maxy=9
for((y=0;y<maxy;y++));do
line="";ch="\x20"
for((x=0;x<=right;x++));do
if((x==left));then
ch="\x2a"
fi
line=$line$ch
done
echo -e $line
if((y==maxy/2));then
((ldlt*=-1));((rdlt*=-1))
fi
((left+=ldlt));((right+=rdlt))
done
10.空心菱形
left=40;right=40;ldlt=-3;rdlt=3;maxy=9
for((y=0;y<maxy;y++));do
line="";ch="\x20"
for((x=0;x<=right;x++));do
if((x==left||x==right));then
ch="\x2a"
else
ch="\x20"
fi
line=$line$ch
done
echo -e $line
if((y==maxy/2));then
((ldlt*=-1));((rdlt*=-1))
fi
((left+=ldlt));((right+=rdlt))
done