2019独角兽企业重金招聘Python工程师标准>>>

之前写了第九个脚本,允许命令行调用bc进行浮点计算,所以现在必然要写一个交互式的,基于命令行的计算器封装脚本。它有一个优点:即使加上帮助信息,也很短。

#!/bin/sh# calc.sh -- 一个看起来像是bc的前端的命令行计算器scale=2show_help(){cat << EOFIn addition to standard math function, calc also supportsa % b    remainder of a/ba ^ b    exponential: a raised to the b powers(x)     sine of x, x in radiansc(x)     cosine of x, x in radiansa(x)     actangent of x, returns radiansl(x)     natural log of xe(x)     exponential log of raising e to the xj(n, x)  bessel function of integer order n of xscale N  show N fractional digits(default = 2)EOF}if [ $# -gt 0 ]; thenexec scriptbc.sh "$@"fiecho "Calc - a simple calculator. Enter 'help' for help, 'quit' to quit."echo -n "calc> "while read command args    # 像不像Python的顺序解包docase $command inquit|exit) exit 0;;help|\?)   show_help;;scale)     scale=$args;;*)         scriptbc.sh -p $scale "$command" "$args";;esacecho -n "calc> "doneecho ""exit 0

脚本如何运行:
可能这个脚本最有意思的部分就是那个while循环了。它创建一个calc>的提示,直到用户完成输入。当然,这个脚本的间接性成就了它自己:shell脚本并不需要特别的复杂。

运行脚本:
这个脚本跑起来非常简单,因为它是一个交互式的,可以提示用户完成特定操作。如果有参数传递给它,它就转而把这些参数传给scripbc.sh。

运行结果:

calc 150 / 3.5 42.85 ./calc.sh Calc - a simple calculator. Enter 'help' for help, 'quit' to quit.calc> helpIn addition to standard math function, calc also supportsa % b    remainder of a/ba ^ b    exponential: a raised to the b powers(x)     sine of x, x in radiansc(x)     cosine of x, x in radiansa(x)     actangent of x, returns radiansl(x)     natural log of xe(x)     exponential log of raising e to the xj(n, x)  bessel function of integer order n of xscale N  show N fractional digits(default = 2)calc> 54354 ^ 3 160581137553864 calc> quit

转载于:https://my.oschina.net/u/578519/blog/100983

第三章:Creating Utilities--24.一个交互式的计算器相关推荐

  1. 读书笔记: C# 7.0 in a nutshell (第 三 章 Creating Types in C#)

    内容: 第三章: C#中创建类型 类 继承 object类型 struct 访问修饰符 接口 枚举 嵌套类 泛型 1. Classes 典型的class定义: class YourClassName ...

  2. C# 线程手册 第三章 使用线程 实现一个数据库连接池(实战篇)

    在企业级软件开发过程中,为了改善应用程序的性能需要通常使用对象池来控制对象的实例化.例如,在我们每次需要连接一个数据库时都需要创建一个数据库连接,而数据库连接是非常昂贵的对象.所以,为了节省为每次数据 ...

  3. mysql第三章关系模型_一个MySQL关系模型只有三个关系(二维表)组成。_学小易找答案...

    [判断题]DELETE语句功能是对表中所有记录或满足条件的记录进行批量删除. [填空题]The computer's entire ____ was on a single board. [单选题]下 ...

  4. 第三章 达瑞,一个很能挣钱的男孩

    "在达瑞8岁的时候,有一天他想去看电影.因为没有钱,他面临一个基本的问题,是问爸妈要钱还是自己挣钱.最后他选择了后者." 不要太容易放弃了,连试一下都不愿意.总是首先想,什么事是做 ...

  5. 使用c语言编程首先要新建,【C语言编程入门系列】—— 第三章,编写第一个C语言程序!...

    导读:一般学一门计算机语言的第一堂上机课("上机"顾名思义,上计算机,机你太美),就是往屏幕输出"hello world",本章也不例外. 3.1 Hello, ...

  6. 第三章 函数——自己定义一个函数

    目录 def语句和参数 返回值和return语句 None值 关键字参数和print() print(,end='') print(,sep='') 局部和全局作用域 global语句 异常处理 第一 ...

  7. P1P2P3口接24个灯流水的c语言代码,第三章单片机并行口c语言程序设计.ppt

    第三章单片机并行口c语言程序设计 3.1 80C51的并行口结构与应用 3.1.1 P0口.P2口的结构 1.P0口作通用的I/O口使用. 这时,CPU发来的"控制"信号为低电平, ...

  8. 交互式计算机图形学总结:第三章 几何对象和变换

    第三章 几何对象和变换 基本概念 –零向量:长度为零,方向没有定义 –向量空间:包含向量和标量 –仿射空间:包含向量.标量.点 –计算机科学的观点:把向量.标量.点看作抽象数据类型(ADT) –凸性: ...

  9. )类 新建javafx程序时_第三章 第一个OpenCV的JavaFX应用程序.md

    # 第三章 第一个OpenCV的JavaFX应用程序 --- ***注意***:我们假设您现在已经阅读了之前的教程.如果没有,请在[http://opencv-java-tutorials.readt ...

最新文章

  1. vlookup示例_VLOOKUP示例–如何在Excel中执行VLOOKUP
  2. 终于知道10月27-28-29这3天为什么调整了
  3. 2246xt u盘开卡详细教程_U盘制作PE及系统安装详细教程!
  4. ubuntu16.04卡在了’SMBus Host Controller not enabled‘
  5. Spring5参考指南:Bean的创建
  6. Javascript let和const
  7. 【WPF】TextBox样式重写注意事项
  8. EOJ 306 树上问题
  9. Repeater 控件的嵌套使用
  10. iOS appicon 与 launchImage 尺寸一览
  11. (已解决)ubuntu下网易云音乐无法打开
  12. 全球及中国冻干菠萝行业市场运行模式及未来发展前景分析报告2022-2028年
  13. MySQL Java的JDBC编程
  14. 2021年焊工(初级)考试报名及焊工(初级)实操考试视频
  15. 爬取京东辣条商品详情
  16. ActiveMQ 无法访问管理页面
  17. apipost中文版
  18. 微信小程序中使用iconfont阿里巴巴矢量图标
  19. python pip install 安装
  20. CSS3多列布局 columns 弹性布局 flex

热门文章

  1. AJPFX关于Set接口学习笔记及总结
  2. SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)
  3. tomcat运行模式APR安装
  4. max_connect_error的说明
  5. Redis事件驱动库转
  6. 从零开始学习Sencha Touch MVC应用之八
  7. Linux系统备份策略探讨
  8. Oracle database 11g 安装 - 配置企业管理器database control失败
  9. 在长沙怎么挑选装饰公司
  10. 移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法...