shell中浮点数值计算

一、shell中数值计算方法

shell中常用的数值计算方法是使用运算符号:$(())
例如,使用命令:

echo $((5*6+1))

即会得到正确的计算结果。但是该方法存在的问题是不能对浮点数进行操作,如下:
在这里插入图片描述
可以看到当使用该运算符进行浮点数运算时会出错。

二、shell中浮点数计算方法

shell中浮点数计算主要有两个方法可以使用。

1、bc计算器

bc实际上是一种编程语言,该语言允许在命令行输入浮点表达式,然后执行,通常在linux下被用作计算器,提供常用的数学计算,包括:

  • + :加法
  • - :减法
  • * :乘法
  • / :除法
  • % :取余
  • ^ :幂运算
    使用bc计算器进行数值计算只需要在将表达式通过管道传递给计算器就能得到结果,使用非常方便。例如:
echo "5.6*3.2+6.7^2"|bc

同时bc计算器还支持自变量来计算,例如:
在这里插入图片描述

2、awk进行浮点运算(高级用法)

awk是一种处理文本文件的语言,内置在bash中,其对于结构化文本信息的提取非常有效。内置有丰富的函数,同时使用该命令同样可以实现复杂的数学计算,例如:
在这里插入图片描述

3、一些tips

相较于bc,使用awk进行浮点数计算优势更加明显,例如可以个性化指定输出,对于特殊数字的识别也更加有效。例如以下是遇到的一个问题:
在这里插入图片描述
可以看到对于计算带有符号的浮点数计算,awk同样可以胜任而使用bc命令会出错。
使用awk还需要注意一点是awk后面紧跟的函数命令注意要使用单引号而不是双引号,因为使用双引号会把$1 $2 $3参数解析成当前脚本的内部参数,而不是直接输出给函数来实现调用。
在这里插入图片描述
可以看到同样是提取文本的第一个单词,如果使用双引号会出错,输出整个文本,而使用单引号就可以得到正确的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值