需求:共有5家商店,逐个逛,买商品则打印商品信息,记录每次购买的金额。逛完5家商店给予总金额输出

分析:大循环逛5家商店,小循环询问是否购买商品,每次买完,对商品价格累加。

#!/bin/bash
#打印商品价格函数
info() {
        printf "        Price list
        1、hat 50¥
        2、shoes 200¥
        3、clothes 300¥
        4、trousers 100¥
        5、glove    30¥
"
}
#小循环选择商品,并累加价格。
shopping() {
        if [ $act == "y" ];then
                read -p "Please choose the goods.(1-5): " buy
                        case $buy in
                        1)
        #这里用的数组索引++,最终用索引对应值*价格
        #等同于 let hatsum=$[hatsum+50]
        let hat[1]++
        hatsum=$[${hat[1]} * 50 ]
        echo "You spent ${hatsum}¥ on the hat"
                        ;;
                        2)
        let shoes[2]++
        shoessum=$[${shoes[2]} * 200 ]
        echo "You spent ${shoessum}¥ on the shoes"
                        ;;
                        3)
        let clothes[3]++
        clothessum=$[${clothes[3]} * 300 ]
        echo "You spent ${clothessum}¥ on the clothes"
                        ;;
                        4)
        let tro[4]++
        trosum=$[${tro[4]} * 100 ]
        echo "You spent ${trosum}¥ on the trosum"
                        ;;
                        5)
        let glove[5]++
        glovesum=$[${glove[5]} * 30 ]
        echo "You spent ${glovesum}¥ on the glove"
                        ;;
                        *)
        echo "please enter number 1-5......"
                        ;;
                        esac
        else
                break
        fi
}
#大循环逛5家商店,如果为y则执行小循环,n,或者其他则continue,跳过本次循环。这里判断不严谨,不为n也会跳过本次循环。
for i in `seq 5`
do
        read -p "Pass the $i store,Go in and have a look?(y/n): " cho
        if [ "$cho" = "y" ];then
                while :
                do
                info
                read -p "Do you want to buy anything?(y/n): " act
                shopping
                done
        else
                continue
        fi
done