前言
在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进行处理。
领取专属 10元无门槛券
私享最新 技术干货