■なんとなく自動販売機のお釣りスクリプトを書いてみた。
ホントなんとなくw。。。コンソールだともう少し缶っぽく見えるのですが。。。
$ cat otsuri.sh
value=("140" "160" "120" "200")
name=("cola " "coffie" "tea " "energy")
for x in `seq 1 9`;do
for y in `seq 1 36`;do
echo $(($x*$y)) | awk '{printf "%d",$1%9}';
done;echo;
done | sed -e 's/[1-9]/=/g' -e 's/0/ /g'
for n in `seq 0 3`;do
echo -n "$n:${name[$n]} "
done
echo -e "\n飲み物を選んでください\n[0-3]\n-1で選択を止めます。"
while read drink;do
if [ $drink -eq -1 ];then
echo "キャンセルします。"
exit 1
elif [ $drink -gt 3 -o $drink -lt 0 ];then
echo "Error!" >&2
exit 1
fi
echo "${value[$drink]} : ${name[$drink]} を選択しました"
break
done
total=0
echo "投入金額: $total 円"
while read money;do
case $money in
10000|5000|2000|1000|500|100|50|10)
total=$(($total + $money))
echo "投入金額: $total 円"
if [ $total -ge ${value[$drink]} ] ;then
total=$(($total-${value[$drink]}))
break;
fi
;;
*)
echo "返却します。" >&2
esac
done
echo -e "\nありがとうございます。\n"
for x in `seq 1 9`;do
for y in `seq 1 9`;do
echo $(($x*$y)) | awk '{printf "%d",$1%9}';
done;echo;
done | sed -e 's/[1-9]/=/g' -e 's/0/ /g'
otsuri_total=0
while [ $total -gt 0 ];do
for n in 10000 5000 2000 1000 500 100 50 10;do
otsuri=$(($total/$n))
total=$(($total%n))
if [ $otsuri -gt 0 ];then
echo "おつりは $n 円 $otsuri 枚です。"
otsuri_total=$(($otsuri_total+($n*$otsuri)))
fi
done
done
echo -e "\nおつりは全部で $otsuri_total 円です。"
$ ./otsuri.sh
======== ======== ======== ========
======== ======== ======== ========
== == == == == == == == == == == ==
======== ======== ======== ========
======== ======== ======== ========
== == == == == == == == == == == ==
======== ======== ======== ========
======== ======== ======== ========
0:cola 1:coffie 2:tea 3:energy
飲み物を選んでください
[0-3]
-1で選択を止めます。
0
140 : cola を選択しました
投入金額: 0 円
100
投入金額: 100 円
100
投入金額: 200 円
ありがとうございます。
========
========
== == ==
========
========
== == ==
========
========
おつりは 50 円 1 枚です。
おつりは 10 円 1 枚です。