shell基础之bus实战(if 练习)

题目:

  一条公交路线共30站,乘客上车需支付1元,之后每超过5站支付0.5元;最好可以实现“余额不足的提醒”和“逃票,漏刷卡的显示”。

  注意:需下载bc计算器

第一种方法(重复语句太多):

 1 #!/bin/bash
 2 read -p "请输入您的公交卡金额:" money
 3 if [ -z "$money" ] || [ "$money" -lt 1 ];then
 4 echo "您的余额不足,请尽快充值!"
 5 exit
 6 else
 7   read -p "请输入您的上车站号:" on
 8     if [ -z "$on" ];then
 9     echo "您有未刷卡记录"
10     elif [ "$on" -gt 30 ] || [ "$on" -le 0 ];then
11     echo "请输入正确的车站号!"
12     exit
13     fi
14   read -p "请输入您的下车站号:" off 
15     if [ -z "$off" ];then
16     echo "您有未刷卡记录" 
17     elif [ "$off" -le 0 ] || [ "$off" -gt 30 ];then
18     echo "请输入正确的车站号!"
19     exit
20     fi 
21   if [ -z "$on" ] && [ -z "$off" ];then
22   echo "您已逃票一次,下次请自觉刷卡"
23   exit
24   elif [ -z "$on" ] || [ -z "$off" ];then  
25   spe=3.5
26   bal=`echo "$money-$spe" |bc`
27   echo "您上车或者下车有未刷卡记录,将会扣除您全程车费$spe元,你的余额还剩$bal元!"
28   exit
29   fi
30     beg=1
31     if [ "$on" -le "$off" ];then
32     dif=`echo "$off-$on" |bc`
33     else
34     dif=`echo "$on-$off" |bc` 
35     fi
36     if [ "$dif" -le "5" ];then
37     spe="$beg"
38     bal=`echo "$money-$spe" |bc`
39     echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal""
40     elif [ "$dif" -gt 5 ] && [ "$dif" -le 10 ];then
41     spe=`echo "scale=1;$beg+0.5" |bc`
42     bal=`echo "$money-$spe" |bc`
43     echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal""
44     echo "$bal"
45     elif [ "$dif" -gt 10 ] && [ "$dif" -le 15 ];then
46     spe=`echo "scale=1;$beg+1" |bc`
47     bal=`echo "$money-$spe" |bc`    
48     echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal""
49     elif [ "$dif" -gt 15 ] && [ "$dif" -le 20 ];then
50     spe=`echo "scale=1;$beg+1.5" |bc`
51     bal=`echo "$money-$spe" |bc`    
52     echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal""
53     elif [ "$dif" -gt 20 ] && [ "$dif" -le 25 ];then
54     spe=`echo "scale=1;$beg+2" |bc`
55     bal=`echo "$money-$spe" |bc`    
56     echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal""
57     else
58     spe=`echo "scale=1;$beg+2.5" |bc`
59     bal=`echo "$money-$spe" |bc`    
60     echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal""
61     fi
62 fi

第二种方法(简化计算过程):

 1 #!/bin/bash
 2 #公交卡金额
 3 read -p "请输入您的公交卡金额:" MON
 4 #判断公交卡里是否金额足够
 5 if [ -z $MON ] || [ $MON -lt 1 ];then
 6 echo "您的公交卡余额不足,请尽快充值!"
 7 exit
 8 fi
 9 #上下车站号
10 read -p "请输入您的上车车站号:" GON
11 read -p "请输入您的下车车站号:" GOF
12 #判断是否有逃票
13 if [ -z $GON ] && [ -z $GOF ];then
14 echo "您已经有逃票记录了,请注意你的信用值!"
15 exit
16 elif [ -z $GON ] || [ -z $GOF ];then
17 BAL=`echo "$MON-3.5" |bc`
18 echo "您有漏刷卡记录,将扣除您全程车票,您的公交卡余额还剩$BAL元!"
19 exit
20 fi
21 NUM=`echo "$GOF-$GON" |bc`
22 COS=`echo "($NUM-1)/5*0.5+1" |bc`
23 BAL=`echo "$MON-$COS" |bc`
24 echo "您一共乘坐了$NUM站,花费了$COS元,您的公交卡还剩$BAL元!"
原文地址:https://www.cnblogs.com/renyz/p/11295059.html