linux-shell编程下的数学运算

前言

在Linux Shell编程中,一般默认输出的都是字符串,如果需要执行数学运算的话就需要使用let或者expr等进行运算,而且这个只能进行整数运行;如果需要有浮点数运行就需要bc或者awk来现实。

整数运算

1、使用let命令进行赋值

#!/bin/bash

a=1

b=2

let c=a+b

echo a+b=c=$c

输出:

a+b=c=3

注释:let几乎支持所有的运算符,包括括号优先、++、--等;参数可以不需要$,就可取到值进行运算;支持方幂运算let "a=3**2";只支持整数运算。

2、使用expr进行运算

#!/bin/bash

a=22

b=33

echo $(expr $a + $b)

输出:

55

注释:需要$取变量值,注意运算符(比如:+)左右两边需要有空格;支持的操作符有: |、&、=、>、+、-、*、/、%;expr支持的操作符中所在使用时需用\进行转义的有:|、&、=、>、*;只支持整数运算。

3、使用$[]运算

#!/bin/bash

a=32

b=33

echo $[$a+$b]

输出:

65

注释:$[]将中括号内的表达式作为数学运算先计算结果再输出;对$[]中的变量进行访问时前面需要加$;$[]支持的运算符与let相同,但也只支持整数运算。

4、使用(())进行处理

#!/bin/bash

a=33

b=44

echo a+b=$((a+b))

输出:

a+b=77

注释: (())的使用方法与let完全相同;但是可以直接输出结果。

总结:以上就是对整数的处理方法,个人习惯用最后一种方式。

浮点数运算

上面的两种发放如果遇到有小数点就会报错。因此浮点数数运行就需要其他命令支持了。

1、bc命令行计算器,可以进行整数运算和浮点数运算

#!/bin/bash

echo $( echo "scale=2; 10/3" | bc)

输出:

3.33

注释:scale是指定精度,而且只有在除法的时候才有生效,其他都是安装原来都有几位就输出几位;bc支持除了位操作的所有运算。

2、awk运算

#!/bin/bash

a=1.1

b=3.222

echo $(awk -v a=$a -v b=$b 'BEGIN')

输出:

4.32

注释:awk的变量跟shell的变量是独立的,所以需要使用-v进行变量传递;支持输出格式化,根据实际需要进行格式化输出;awk内置有log、sqr、cos、sin等等函数。

总结:小数运算的时候,还是习惯使用awk,bc输出不能根据自己的需要进行格式化。

总结

awk是一种文本处理工具,同时也是一种程序设计语言,作为一种程序设计语言。因此进行浮点数计算并需要进行判断的时候,建议还是使用awk进行处理。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180712A002IB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券