支持数学表达式运算是编程语言所提供的一项基本功能。但是在shell中,却显得没有其他语言中那么自然。
1、expr命令
加法
$ expr 1 + 5 6
乘法
$ expr 1 \* 5 5
需要注意的是,数字与运算符之间需要预留空格,否则无法计算出结果。此外,*作为shell的通配符关键字,需要用\来转义
2、let命令
let命令能够将数学表达式结果运算出来,达到expr类似效果
#!/bin/bash j=1 i=2 n=10 let m="$j+$i+$n" echo $m 结果为13
3、使用$[]
使用$[]可以运算表达式
$ echo $[1 + 5] 6
4、使用bc解决数学运算的整数限制
bc是linux中内置的bash计算工具,可以直接使用命令bc来启动
(1)简单使用
$ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 12*3 36 2.34535*33 77.39655 scale=6 2.34535*33 77.39655 1/3 .333333 scale=8 1/3 .33333333 quit
sacle用来设置计算结果的精度,quit是退出bc
(2)在脚本中使用bc
#!/bin/bash var1=`echo " scale=5;3.66/5"|bc` echo the result is $var1 结果:the result is .73200
如果bc计算表达式过长,需要多行,可使用内联重定向技术
#!/bin/bash var1=232 var2=22.36 var3=88.589 var4=71 var5=`bc<<EOF scale=5 a1=($var1 * $var2) b1=($var3 * $var4) a1 + b1 EOF ` echo the result is $var5 计算结果:the result is 11477.339