linux中shell脚本执行数学运算

linux中shell脚本执行数学运算

shell脚本中执行数学运算有以下方法:

  • expr命令
  • 方括号
  • bc命令浮点运算

expr 命令

在命令行中使用

[vncuser1@cdpJenkins1 demo]$ expr 2 + 1
3

当出现*操作符时,需要使用转义字符,否则会出错:

[vncuser1@cdpJenkins1 demo]$ expr 5 \* 2
10
[vncuser1@cdpJenkins1 demo]$ expr 5 * 2
expr: syntax error: unexpected argument 'test1'

在shell脚本中使用

shell脚本中也同样复杂:

#!/bin/bash
var1=10
var2=20
var3=$(expr $var2 / $var1)
echo "The result is $var3"

执行结果为:

[vncuser1@cdpJenkins1 demo]$ sh test2.sh
The result is 2

注意使用expr时,运算符两侧要有空格

方括号

用法:

$[ operation ]

在命令行中使用

[vncuser1@cdpJenkins1 demo]$ var1=$[ 1 +5 ]
[vncuser1@cdpJenkins1 demo]$ echo $var1
6

在shell脚本中使用

例子:

#!/bin/bash
var1=100
var2=50
var3=20
var4=$[ $var1 * ($var2-$var3) ]
echo "The result is $var4"

运行结果:

[vncuser1@cdpJenkins1 demo]$ sh test3.sh
The result is 3000

然而方括号无法计算浮点运算仍然会有局限性

bc命令计算浮点运算

在命令行中使用

[vncuser1@cdpJenkins1 demo]$ 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'.
3 / 4
0
scale=4
3 / 4
.7500

scale参数可以用来设置保留的小数位,quit命令可以退出,-q命令选项可以不显示bash计算器冗长的欢迎信息

在脚本中使用

语法:

variable=$(echo "options; expression" | bc)

expression部分可以是两个变量

#!/bin/bash
var1=20
var2=3.14159
var3=$(echo "scale=4; $var1 * $var1" | bc)
var4=$(echo "scale=4; $var3 * $var2" | bc)
echo The final result is $var4

运行结果:

The final result is 1256.63600

然而需要大量运算时,上面的方法就比较麻烦了,这个时候可以使用内联输入重定向:

 #!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71
var5=$(bc << EOF
scale = 4
a1 = ( $var1 * $var2)
b1 = ($var3 * $var4)
a1 + b1
EOF
)
echo The final answer for this mess is $var5

注意在bash计算器中创建的变量只在bash计算器中有效,不能在shell脚本中使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thinkerCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值