shell脚本编程笔记(二)—— 执行数学运算

16 篇文章 3 订阅

数学运算在编程中也很重要,shell对它的支持并不算好,本文整理一下shell进行数学运算的途径,各种方法的缺点。

一、 expr命令

shell最开始处理数学表达式的命令,可以在命令行做算术运算,参数与运算符间一定要有空格,否则无法识别

expr arg1 运算符 arg2

可以将数学表达式结果赋值给一个变量

对于Linux的一些特殊字符,它无法识别,需要使用转义字符。

由于expr命令比较笨拙,经常无法识别符号,bash引入了一种更简单的方法执行数学表达式

 

二、 使用$[]做算术运算

将数学表达式放在$[]中,bash便不会将其识别为特殊符号。

但bash shell有一个致命的缺点,它只支持整数运算,使用浮点数会报错

 

三、 bash计算器bc

有几种解决方案能处理bash只支持整数运算的问题,其中最常用的是内建bash计算器bc。

1. bc的基本用法

bc实际上是一种编程语言,它允许在命令行中输入浮点表达式,然后解释并计算表达式,最后返回结果。

bc能够识别:数字(整数与浮点数)、变量、注释、表达式、编程语句(如if-then)、函数

浮点运算由内建变量scale控制,表示希望在计算结果中保留的小数位数。如果不设置,可能会得到错误结果。

bc中支持定义和使用变量,可使用print命令显示变量值,但变量仅在bc内可见

 

2. 在脚本中使用bc

利用管道 | 将表达式传送给bc,并将计算结果赋值给变量

var=$(echo "options; expression" | bc)
#或
var=`echo "options; expression" | bc`

#例如
var=$(echo "scale=2; 5/2" | bc)
echo $var

也可以直接计算变量值,例如 $var1 * $var2 + $var3 * $var4

#!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71
var5=$(echo "scale=2; $var1*$var2+$var3*$var4" | bc)
echo The final answer is $var5

 

3. 使用内联输入重定向

对于复杂运算,可以使用内联输入重定向,直接在命令行中重定向数据,更加清晰明了。

var=$(bc << EOF
options
statements
expression
EOF
)

例如

#!/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 is $var5

 

参考:《Linux命令行与shell脚本编程大全》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hehuyi_In

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

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

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

打赏作者

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

抵扣说明:

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

余额充值