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元!"
shell基础之bus实战(if 练习)的更多相关文章
- Linux实战教学笔记17:精简shell基础
第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- Shell基础学习小结
0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- shell基础二十篇 一些笔记
shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...
- shell基础(转)
shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...
- shell基础及变量
一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...
- Shell 基础教程
一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html
- Linux基础学习(10)--Shell基础
第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...
随机推荐
- 【Java】流、IO(初步)
(这部分比较抽象且写的不是很好,可能还要再编辑) [概述] 流:流是一系列数据,包括输入流和输出流.你可以想象成黑客帝国的"代码雨",只要我们输入指令,这些数据就像水一样流进流出了 ...
- Nginx/Apache + acme.sh 实现https访问
1 概述 acme.sh实现了acme协议,可以从Let's Encrypt生成免费的ssl证书用于实现https,本文介绍了常见的两种服务器Apache与Nginx上利用acme.sh配置https ...
- (一)LDAP 简介
一 LDAP 简介 LDAP是一种通讯协议,LDAP支持TCP/IP.协议就是标准,并且是抽象的.在这套标准下,AD(Active Directory)是微软出的一套实现. AD 暂且把它理 ...
- 听说你买的基金又“绿了”,手把手教你用 Python选出好基金
打工人打工魂打工都是人上人,红基金绿基金绿了又绿你基金.今天教大家一招不再被(基金)绿. 01 开发环境 Windows10 Python3 Pycharm 一些必要的库 02 步骤 1. 获取基金排 ...
- Python数据类型之字符串类型
字符串的表示 字符串是Python中最常用的数据类型之一,必须使用成对的引号包围来表示字符串,引号可以是单引号 ' .双引号 " .三引号''' """,格式如 ...
- 1.8.5- input按钮组
- hdu3035 最小割转换成最短路
题意: 给你一个平面图,要求从求出从左上角到右下角的最小割. 思路: 如果大意的可能直接上来一遍最大流,然后就会各种悲剧的MLE,TLE,其实这个题目可以用到有个论文里面的那个 ...
- AppScan扫描器的用法
目录 AppScan 软件功能 建立一次基础的扫描 AppScan AppScan是一款非常好用且功能强大的Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界,AppS ...
- 使用同步或异步的方式完成 I/O 访问和操作(Windows核心编程)
0x01 Windows 中对文件的底层操作 Windows 为了方便开发人员操作 I/O 设备(这些设备包括套接字.管道.文件.串口.目录等),对这些设备的差异进行了隐藏,所以开发人员在使用这些设备 ...
- R3获取kernel32地址
获取Kernel32地址 如果是搞PE变形或者PE重构,再或者代码注入,很多时候我们要动态获取Loadlibrary()以及GetPeocAddress()两个函数的地址,通过这两个函数再动态获取其他 ...