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来 ...
随机推荐
- OO_Unit 3 JML规格化设计总结
OO_Unit 3 JML规格化设计总结 JML语言概述(Level 0) 概念定义 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML ...
- leetcode 刷题(数组篇)152题 乘积最大子数组 (动态规划)
题目描述 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积. 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子 ...
- 后续来啦:Winform/WPF中快速搭建日志面板
后续来啦:Winform/WPF中快速搭建日志面板 继昨天发文ASP.NET Core 可视化日志组件使用(阅读文章,查看视频)后,视频下有朋友留言 "Winform客户端的程序能用它不?& ...
- Horovod Install
Horovod documentation 安装 [Step1]安装Open MPI 注意: Open MPI 3.1.3 安装有些问题, 可以安装 Open MPI 3.1.2 或者 Open MP ...
- (十一)Docker-DinD
1. Docker in Docker Step 1. Start a daemon instance $ docker run --privileged --name some-docker -d ...
- 使用numba加速python科学计算
技术背景 python作为一门编程语言,有非常大的生态优势,但是其执行效率一直被人诟病.纯粹的python代码跑起来速度会非常的缓慢,因此很多对性能要求比较高的python库,需要用C++或者Fort ...
- [ Laravel 5.6 文档 ] 进阶系列 —— 任务调度
简介 Cron 是 UNIX.SOLARIS.LINUX 下的一个十分有用的工具,通过 Cron 脚本能使计划任务定期地在系统后台自动运行.这种计划任务在 UNIX.SOLARIS.LINUX下术语为 ...
- 十步解决php utf-8编码
以前说过如果JS文件不是UTF8会在IE有bug,所以JS代码也要用UTF-8.还有数据库也都要用UTF-8.php用UTF-8总结: php文件本身必须是UTF-8编码.不像Java会生成class ...
- 缓冲区溢出分析第06课:W32Dasm缓冲区溢出分析
漏洞报告分析 学习过破解的朋友一定听说过W32Dasm这款逆向分析工具.它是一个静态反汇编工具,在IDA Pro流行之前,是破解界人士必然要学会使用的工具之一,它也被比作破解界的"屠龙刀&q ...
- CVE-2012-3569:VMware OVF Tool 格式化字符串漏洞调试分析
0x01 简介 VMware OVF Tool 是一个命令行实用程序,允许您从许多 VMware 产品导入和导出 OVF 包.在 2.1.0 - 2.1.3 之间的版本中存在格式化字符串漏洞,通过修改 ...