【13】shell:计算器

一、bc


1.1、交互模式

bash计算器实际上是一种编程语言,它允许在命令行中输入浮点表达式,然后解释并计算该表达式,最后返回结果。bash计算器可以识别以下几种:

  • 数字(整数和浮点数)
  • 变量(简单变量和数组)
  • 注释(以#或C语言中的/* */开始的行)
  • 表达式
  • 编程语句(例如if-then语句)
  • 函数

输入 bc 即可运行交互式运算;

[root@localhost tmp]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+1
2
7/2
3

scale=3
7/2
3.500

10/3
3.333

如上所示,在除法运算中,在 scale 值被设置前,bash计算器的计算结果不包含小数位。在把 sclae 设置成3后,bash计算器显示的结果包含 3 位小数。

1.2、非交互模式

bc也可以进行非交互式的运算,方法是与echo一起使用。

$ echo "scale=5;9+8-7*6/5^2"|bc           优先级^ > *、/ > +、- *
15.32000

$ echo "s(2/3*a(1))"|bc -l                还记得sina(30°)等于0.5么

$ echo "scale=5;sqrt(15)"|bc              开方
3.87298

$ echo "ibase=16;obase=2;ABC"|bc
101010111100

二、expr


$ expr 1 + 2
3

$ expr 1+2
1+2

$ expr 9 + 8 - 7 \* 6 / 5 + \( 4 - 3 \) \* 2
11
  • 注意空格,否则不运算直接显示;
  • 对于那些容易被shell错误解释的字符,需要转义;

三、$(())


等同于$[]

$ var=$((1+2))
$ echo $var
3

在使用$(())来计算公式时,不需要转义,但是这种方法不能运算小数:

$ var1=$((7/2))
$ echo $var1
3

四、$[]


等同于$(())

$ var=$[1 + 2]
$ echo $var
3

在使用方括号来计算公式时,不需要转义,但是这种方法不能运算小数:

$ var1=$[7/2]
$ echo $var1
3

五、awk

作为一个基本什么都能做的工具,数学运算肯定也是可以的:

# 基础运算:
$ echo '10 3' | awk '{print $1/$2}'
3.33333

$ echo '10 3' | awk '{print $1 * $2}'
30

# 变量
$ a=10
$ b=3
$ echo | awk "{print $a/$b}"  # 注意此处必须是双引号
3.33333


# 指定小数位数:
$ echo $a $b | awk '{printf "%.2f\n", $1/$2}' # 保留两位小数
3.33
Shell 简单计算器是一种基于 Unix/Linux 系统的 shell 脚本工具,它可以执行基本的算术运算,如加、减、乘、除以及取余数等数学操作。通常,这类计算器直接通过终端输入指令来进行计算,而无需安装额外的软件包。 下面是一个非常基础的 Shell 计算器示例,它接受两个数字和一个操作符作为输入,并返回结果: ```bash #!/bin/bash # 定义函数执行计算 calculate() { num1=$1 op=$2 num2=$3 result=0 case "$op" in '+') result=$(echo "$num1 + $num2" | bc) ;; '-') result=$(echo "$num1 - $num2" | bc) ;; '*') result=$(echo "$num1 * $num2" | bc) ;; '/') if [ $num2 -eq 0 ]; then echo "错误:除数不能为零。" exit 1 else result=$(echo "scale=2; $num1 / $num2" | bc) fi ;; '%') result=$(echo "$num1 % $num2" | bc) ;; *) echo "错误:不支持的操作符 '$op'" exit 1 ;; esac echo "结果:$result" } # 用户输入数据 read -p "请输入第一个数字: " num1 read -p "请输入操作符 (+, -, *, /, %): " op read -p "请输入第二个数字: " num2 # 执行计算 calculate "$num1" "$op" "$num2" ``` ### 使用方法: 1. 将上述脚本保存到一个文件,例如命名为 `calculator.sh`。 2. 给该脚本执行权限:`chmod +x calculator.sh` 3. 运行脚本:`./calculator.sh` 并按照提示输入数值和操作符。 此计算器示例使用了 `bc`(Basic Calculator)程序来处理浮点数的计算。`bc` 是 Unix/Linux 系统上常用的数学计算器。 --- ## 相关问题: 1. Shell 中有哪些常见的数学命令可用于此类计算任务? 2. 自定义 Shell 计算器时如何处理整数与浮点数的混合运算? 3. 如何增加 Shell 计算器的功能,使其能够处理更复杂的问题,比如科学计数法或指数运算?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值