Chinaunix

标题: [原创]简单的unix脚本版计算器 [打印本页]

作者: styr    时间: 2005-11-11 14:23
标题: [原创]简单的unix脚本版计算器
简单的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
复制代码

作者: waker    时间: 2005-11-11 14:41

直接输入:

bc

不好么?
作者: 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 arthematic expression:

s(1+3)*a(2*c(2))+100-120/90
99.19198173889873721529
作者: 寂寞烈火    时间: 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 编辑 ]
作者: icesummit    时间: 2005-11-11 15:21
标题: dbcat小MM不错呀。
手勤快,前途无量啊。
作者: styr    时间: 2005-11-11 15:39
直接输入 bc 也行,但在某些应用上不太方便,比如需要做一堆连续数据计算及累积的时候.
作者: 寂寞烈火    时间: 2005-11-11 15:55
原帖由 styr 于 2005-11-11 15:39 发表
直接输入 bc 也行,但在某些应用上不太方便,比如需要做一堆连续数据计算及累积的时候.

redhat下的gnome有个:
/usr/bin/gnome-calculator 算个简单使用的计算器
作者: styr    时间: 2005-11-11 16:26
老大的知识面真是宽广................偶现在还只能在SCO里学着

其实现在很多型号的终端本身带有计算器的,可是有些就没有,sco控制台也没有好用的计算器,所以先弄这个来暂用一下^_^
作者: 寂寞烈火    时间: 2005-11-11 16:28
原帖由 styr 于 2005-11-11 16:26 发表
老大的知识面真是宽广................偶现在还只能在SCO里学着

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

吼吼,全当一个练手
作者: dbcat    时间: 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 `('

作者: 寂寞烈火    时间: 2005-11-11 17:12
原帖由 dbcat 于 2005-11-11 16:59 发表


$ js () { echo $1|bc -l; }
$ js (1+1)
bash: syntax error near unexpected token `('


作者: dbcat    时间: 2005-11-11 19:51
$ js(){ echo $1|bc -l; }
$ js \(1+1\)
2
$ js s\(\(1+1\)\)
.90929742682568169539

作者: 寂寞烈火    时间: 2005-11-12 00:17
原帖由 dbcat 于 2005-11-11 19:51 发表
$ js(){ echo $1|bc -l; }
$ js (1+1)
2
$ js s((1+1))
.90929742682568169539

You are A shell Master !!!!!!!!!!!!!!!!!!!!!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2