Linux 执行数学运算

Linux 执行数学运算

shell 处理数学运算是个很复杂的过程。一般有两种方法:

  • expr 命令
  • 使用方括号
zzz@ubuntu:~/my_learning$ expr 1+1
1+1
zzz@ubuntu:~/my_learning$ expr 1 + 1
2
zzz@ubuntu:~/my_learning$ expr 1 * 1
expr: 语法错误:未预期的参数 “test.sh”
zzz@ubuntu:~/my_learning$ expr 1 \* 1
1
zzz@ubuntu:~/my_learning$ $[1 * 1]
1:未找到命令
zzz@ubuntu:~/my_learning$ a=$[1 * 1]
zzz@ubuntu:~/my_learning$ echo $a
1
zzz@ubuntu:~/my_learning$ ^C
zzz@ubuntu:~/my_learning$ 
zzz@ubuntu:~/my_learning$ a=$[3 / 2]
zzz@ubuntu:~/my_learning$ echo $a
1
zzz@ubuntu:~/my_learning$ 

可以看到在执行运算时,要注意运算符两边的空格。expr 计算时,由于一些运算符可能被赋予了其他含义。因此,有时需要使用 \ 进行转义。所以使用 $[ ] 可以更方便的执行运算,运算符不会被识别为其它含义。
但是,以上介绍的运算操作有一个问题。只能处理整数运算,不支持浮点数。
常见的方式是使用内建的计算器bc。
bc
类似于一种编程语言,它允许在命令行中输入浮点表达式,然后解释并计算该表达式,最后返回计算结果。bash计算器支持:

  • 数字
  • 变量
  • 注释
  • 表达式
  • 编程语言
  • 函数
zzz@ubuntu:~/my_learning$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
a=2
b=3
a / b
0
scale
0
scale=2
scale
2
a / b
.66
quit
zzz@ubuntu:~/my_learning$ 

在脚本中使用bc

zzz@ubuntu:~/my_learning$ a=2
zzz@ubuntu:~/my_learning$ variable=`echo "scale=2; $a/3" | bc`
zzz@ubuntu:~/my_learning$ echo $variable 
.66
zzz@ubuntu:~/my_learning$ 

当需要涉及大量的运算时,可以使用内联输入重定向。EOF文本字符串标识了内联重定向数据的起止。bc 中可以使用shell中定义的变量,用 $ 标识。bc 中也可以定义变量,使用时不需要 $ 标识。bc中定义的变量,bc结束后,shell不能使用。

zzz@ubuntu:~/my_learning$ cat test.sh 
#!/bin/bash
a=2
variable=$( bc << EOF
scale=2
b=3
c = ($a / b)
c
EOF
)

echo The result: $variable
zzz@ubuntu:~/my_learning$ ./test.sh 
The result: .66
zzz@ubuntu:~/my_learning$ 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值