文章目录
1 多重循环小实验
案例一:九九乘法表
方法一
#!/bin/bash
for ((a=1;a<=9;a++)) #外层循环用于表示行
do
for ((b=1;b<=a;b++)) #内层循环用于表示列
do
let sum=a*b
#-n:代表不换行输出 echo要用制表符(tab键对齐),要用-e选项
echo -n -e "$b*$a=$sum\t"
done
#内循环执行完换行
echo ""
done
方法二
#!/bin/bash
a=1
while [ $a -le 9 ]
do
b=1
while [ $b -le $a ]
do
let sum=a*b
echo -n -e "$b*$a=$sum\t"
let b++
done
echo ""
let a++
done
案例二:矩形
#!/bin/bash
#矩形长20,宽10
for ((a=1;a<=10;a++)) #外层循环用于表示行
do
for ((b=1;b<=20;b++)) #内层循环用于表示列
do
echo -n "*"
done
echo ""
done
空心矩形
#!/bin/bash
#矩形,长20,宽10
#空心的,第一行和最后一行输出20个*。其他行先输出一个*,再输出18个空格,最后再输出一个*
for ((a=1;a<=10;a++))
do
if [ $a -eq 1 -o $a -eq 10 ];then
for ((b=1;b<=20;b++))
do
echo -n "*"
done
else
echo -n "*"
for i in {1..18}
do
echo -n " "
done
echo -n "*"
fi
echo " "
done
案例三:三角形
正直角三角形
#!/bin/bash
for ((a=1;a<=9;a++))
do
for ((b=1;b<=a;b++))
do
echo -n "*"
done
echo " "
done
倒直角三角形
#!/bin/bash
for ((a=1;a<=9;a++))
do
for ((b=9;b>=a;b--))
do
echo -n "*"
done
echo " "
done
反直角三角形
#!/bin/bash
#反直角三角
for ((a=1;a<=9;a++))
#for ((a=9;a>=1;a--))
do
for ((b=1;b<=a;b++))
do
echo -n " "
done
for ((c=9;c>=a;c--))
do
echo -n "*"
done
echo " "
done
等腰三角形
方法一
#!/bin/bash
#等腰三角形
for ((a=9;a>=1;a--))
do
for ((b=1;b<=a;b++))
do
echo -n " "
done
for ((c=9;c>=a;c--))
do
echo -n "*"
done
for ((c=8;c>=a;c--))
do
echo -n "*"
done
echo " "
done
方法二
#!/bin/bash
#等腰三角
for ((a=1;a<=9;a++))
do
#输出空倒三角
for ((b=9;b>=a;b--))
do
echo -n " "
done
#计算每行应该输出几个*(行数*2-1)
i=$[(a * 2) - 1]
#输出*
for ((h=1;h<=i;h++))
do
echo -n "*"
done
echo ""
done
案例四:菱形
方法一:上面是数学方法,下面是图形拼接的方法
#!/bin/bash
#等腰三角
for ((a=1;a<=9;a++))
do
#输出空倒三角
for ((b=9;b>=a;b--))
do
echo -n " "
done
#计算每行应该输出几个*
i=$[(a * 2) - 1]
#输出*
for ((h=1;h<=i;h++))
do
echo -n "*"
done
echo ""
done
#倒等腰三角
for ((a=2;a<=9;a++))
do
for ((b=1;b<=a;b++))
do
echo -n " "
done
for ((c=9;c>=a;c--))
do
echo -n "*"
done
for ((d=8;d>=a;d--))
do
echo -n "*"
done
echo ""
方法二:下面是数学方法,上面是图形拼接的方法
#!/bin/bash
#倒等腰三角
for ((a=9;a>=1;a--))
do
for ((b=1;b<=a;b++))
do
echo -n " "
done
for ((c=9;c>=a;c--))
do
echo -n "*"
done
for ((d=8;d>=a;d--))
do
echo -n "*"
done
echo ""
done
#等腰三角
for ((a=9;a>=1;a--))
do
#输出空倒三角
for ((b=9;b>=a;b--))
do
echo -n " "
done
#计算每行应该输出几个*
i=$[(a * 2) - 1]
#输出*
for ((h=1;h<=i;h++))
do
echo -n "*"
done
echo ""
可调节大小菱形
#!/bin/bash
#输出菱形,并实现可通过输入数值的大小来伸缩菱形的大小
read -p "请定义菱形的大小:" size
for ((i=1;i<=$size;i++))
do
for ((a=$size;a>=$i;a--))
do
echo -n " "
done
chang=$[2*$i-1]
for ((b=1;b<=$chang;b++))
do
echo -n "*"
done
echo ""
done
for ((i=2;i<=$size;i++))
do
for ((c=1;c<=$i;c++))
do
echo -n " "
done
for ((d=$size;d>=$i;d--))
do
echo -n "*"
done
for ((e=$[$size-1];e>=$i;e--))
do
echo -n "*"
done
echo ""
done
案例五:平行四边形
#!/bin/bash
#平行四边形
#for ((a=1;a<=9;a++))
#do
# for ((b=1;b<=a;b++))
#do
# echo -n " "
# done
#for ((c=1;c<=9;c++))
#do
# echo -n "*"
#done
#echo ""
#done
for ((a=1;a<=9;a++))
do
for ((b=9;b>=a;b--))
do
echo -n " "
done
for ((c=1;c<=9;c++))
do
echo -n "*"
done
echo ""
done
案例六:梯形
直角梯形
#!/bin/bash
#梯形
for ((a=1;a<=9;a++))
do
for ((b=1;b<=a;b++))
do
echo -n "*"
done
for ((c=1;c<=9;c++))
do
echo -n "*"
done
echo ""
done
等腰梯形
#!/bin/bash
#等腰梯形
for ((a=1;a<=9;a++))
do
for ((b=9;b>=a;b--))
do
echo -n " "
done
for ((c=1;c<=9+a;c++))
do
echo -n "*"
done
for ((d=1;d<=a;d++))
do
echo -n "*"
done
echo ""
done
2 逛淘宝选购商品
写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额
#!/bin/bash
#n代表逛了几家店
n=1
#sum代表购物总额
sum=0
#只要不退出就会一直执行下去
while true
do
echo "来到了第${n}家店门口"
read -p "是否进去看看?(yes/no):" doing
#如果doing为yes,则会一直在这家店购物,为no会退出这个循环
while [ "$doing" = "yes" ]
do
echo -e "1:衣服¥500\n2:裤子¥400\n3:鞋子¥350\n4:帽子¥150\n5:袜子¥50\n6:放弃购买
"
read -p "请选择你需要购买的商品序号:" num
case $num in
1)
echo "衣服购买成功"
sum=$[sum + 500]
;;
2)
echo "裤子购买成功"
sum=$[sum + 400]
;;
3)
echo "鞋子购买成功"
sum=$[sum + 350]
;;
4)
echo "帽子购买成功"
sum=$[sum + 150]
;;
5)