免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4627 | 回复: 12
打印 上一主题 下一主题

[原创]简单的unix脚本版计算器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-11 14:23 |只看该作者 |倒序浏览
简单的unix脚本版计算器,支持四则混合运算及多参数运算,欢迎修改改进,多提意见,谢谢

  1. #!/bin/ksh
  2. #简单的unix脚本版计算器 V051111

  3. main()
  4. {
  5. [ "$(echo "$formula" | egrep "/0[^.][^0-9]|/0 |/0$")" ] &&
  6. { echo "  除数不能为零" ; continue ; }
  7. var=$(echo "$formula" | bc 2>/dev/null)
  8. [ $? -eq 0 ] && { sum=$(echo "$sum+$var" | bc) ; echo $sum ; }
  9. || echo "  表达式输入错误"
  10. }

  11. trap 'echo "33[0m" ; exit ' 0 1 2 3 9 15
  12. echo "33[1m"
  13. sum=0
  14. clear
  15. printf "
  16.         脚 本 版 计 算 器  

  17.     支持四则混合运算及多参数运算
  18.     输入为 q 或 Q 时退出  
  19.     输入为 c 或 C 时清空累计计算结果
  20.   
  21. "
  22. while :
  23. do      
  24. echo -n "   请输入表达式:  "
  25. read formula
  26. [ "$formula" ] || continue
  27. case "$formula" in
  28. q|Q) exit ;;
  29. c|C) sum=0 ; clear ; continue ;;
  30. *) main ;;
  31. esac
  32. done
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2005-11-11 14:41 |只看该作者

直接输入:

bc

不好么?

论坛徽章:
0
3 [报告]
发表于 2005-11-11 14:50 |只看该作者
Excellent.......
Dont have KSH.
write a bash version(very simple):
$ function cal(){ echo -e "Input an arthematic expression:\n"; read x; echo $x | bc -l; }

demo:
$ cal
Input an arthematic expression:

s(1+3)*a(2*c(2))+100-120/90
99.19198173889873721529

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-11-11 15:20 |只看该作者
原帖由 dbcat 于 2005-11-11 14:50 发表
Excellent.......
Dont have KSH.
write a bash version(very simple):
$ function cal(){ echo -e "Input an arthematic expression:n"; read x; echo $x | bc -l; }

demo:
$ cal
Input an a ...

美女帮帮主的写法就是ksh的function的典型写法
BTW: 简单些

  1. js () { echo $1|bc -l; }
复制代码

这个函数名不要和系统自带的cal相冲突

[ 本帖最后由 寂寞烈火 于 2005-11-11 16:00 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2005-11-11 15:21 |只看该作者

dbcat小MM不错呀。

手勤快,前途无量啊。

论坛徽章:
0
6 [报告]
发表于 2005-11-11 15:39 |只看该作者
直接输入 bc 也行,但在某些应用上不太方便,比如需要做一堆连续数据计算及累积的时候.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-11-11 15:55 |只看该作者
原帖由 styr 于 2005-11-11 15:39 发表
直接输入 bc 也行,但在某些应用上不太方便,比如需要做一堆连续数据计算及累积的时候.

redhat下的gnome有个:
/usr/bin/gnome-calculator 算个简单使用的计算器

论坛徽章:
0
8 [报告]
发表于 2005-11-11 16:26 |只看该作者
老大的知识面真是宽广................偶现在还只能在SCO里学着

其实现在很多型号的终端本身带有计算器的,可是有些就没有,sco控制台也没有好用的计算器,所以先弄这个来暂用一下^_^

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
9 [报告]
发表于 2005-11-11 16:28 |只看该作者
原帖由 styr 于 2005-11-11 16:26 发表
老大的知识面真是宽广................偶现在还只能在SCO里学着

其实现在很多型号的终端本身带有计算器的,可是有些就没有,sco控制台也没有好用的计算器,所以先弄这个来暂用一下^_^

吼吼,全当一个练手

论坛徽章:
0
10 [报告]
发表于 2005-11-11 16:59 |只看该作者
原帖由 寂寞烈火 于 2005-11-11 15:20 发表

美女帮帮主的写法就是ksh的function的典型写法
BTW: 简单些

  1. js () { echo $1|bc -l; }
复制代码

这个函数名不要和系统自带的cal相冲突


$ js () { echo $1|bc -l; }
$ js (1+1)
bash: syntax error near unexpected token `('
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP