shell中的数学运算

shell中要进行数学运算通常有3中方法:

expr命令

比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如:expr \( 2 + 3\)  \* 5,这样就会使得表达式很难看

$[expression]命令

使用$[expression]命令也可以进行数学计算,并且比expr方便的是*和括号可以不用转义,比如仍然计算(2 + 3) * 5,可以直接写为:

result=$[ (2 + 3) * 5 ]

上面两种操作符expr命令和$[expression]都只能处理整数,而无法处理浮点数,要进行浮点数运算,就必须借助shell当中的bc命令。

bc命令

对于简单的运算,可以使用如下形式:

result=`echo "options;expression" | bc`

其中options通常都是使用bc里面的变量scale设置浮点数精度(scale默认为0),expression为算数表达式,比如计算3.6 * 7.2,可以写为:

result=`echo "scale=3;3.6 * 7.2" | bc`

这种形式对于简单的计算很方便,但是如果涉及到复杂的,可以使用下面的形式:

result=`bc << EOF

options

expression

EOF`

其中<<是内联输入重定向运算符,其后跟的是结束标志(可以是任何字符或者字符串),上面的表达式表示给bc命令提供输入,直到遇到EOF为止;options和expression同上。

比如,仍然是计算3.6 * 7.2,可以写为:

result=`bc << EOF
scale = 3
var1 = 3.6
var2 = 7.2
var1 * var2
EOF`

使用bc命令需要注意两点:

1) bc命令里面可以自己定义变量,如上面的var1和var2,但是只能在bc命令里面使用,当bc命令结束时,这些变量无法访问,同时在bc里面访问这些变量无需带$符

2)bc命令里面可以访问shell中的变量

时间: 2024-12-13 07:54:02

shell中的数学运算的相关文章

shell脚本中的数学运算

shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法.以后用到的时候能够来看,呵呵 1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1,悲剧,呵呵 b) var=1 var=$var+1 echo $var 输出结果是1+1.依旧悲剧,呵呵 2.正确方法 1)使用let var=1 let "var+=1" echo $var 输出结果为2.这次没有悲剧 注意: a)经我測试let差点儿支持全部的运算符,在网上看到一篇文

Shell脚本(二)数学运算

直接上代码. #!/bin/bash no1=4 no2=5 echo "using let ..." let result=no1+no2 echo "result is: ${result}" let result++ echo "result after 1 increment is: ${result}" let result+=6 echo "result after 6 increment is: ${result}&quo

在Shell中使用日期运算和比较

#!/bin/bash startDate="$1" endDate="$2" DATE_FMT="%Y%m%d" source ./log.sh export DEBUG="true" function showUsage() {  warn "" warn "------------------------ Usage ----------------------------- "

javascript中的数学运算

1 var a1 = Math.pow(2,3); //2的3次幂 2 var a2 = Math.round(.6); //四舍五入 3 var a3 = Math.round(0.6); //四舍五入,自行测试完成小数四舍五入 4 var a4 = Math.ceil(.6); //向上求整 5 var a5 = Math.floor(.6); //乡下求整 6 var a6 = Math.abs(-5); //求绝对值 7 var a7 = Math.max(3,5,8); //返回最大值

认真学习shell的第一天-数学运算

shell中的数学运算有三种方式: (1)let,用let的时候,变量名称前不用添加$ (2)[],[]中变量可使用也可不使用$ (3)(())变量名之前必须添加$

Linux shell 变量 数学 运算

Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 bc 两个程序实现高级运算: 1, Linux shell 变量的基本运算 数值作为常规变量直接赋值给变量,并且以字符串形式保存. 1.1 let 命令可以用于直接执行基本操作:         当我使用 let 的时候,我们不使用 $ 符号引用变量. no1=7; no2=8; echo "---

玩转变量、环境变量以及数学运算(shell)

变量和环境变量    var=value  给变量赋值,输出语句:$ echo $var或者是$ echo ${var},记住中间有个空格 例如:name="coffee" age="20" $echo "我的名字是:${name},年龄是:${age}" 在输出语句echo中可以在双引号中使用变量,但是如果是单引号那么变量不会扩展得到定义的值. 获取字符串的长度:${#var} 1 //例如: 2 name="yy" $ec

Linux shell变量数学运算

Linux shell变量数学运算 Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算:2)Linux shell 中使用 expr 与 bc 两个程序实现高级运算: 1, Linux shell 变量的基本运算 数值作为常规变量直接赋值给变量,并且以字符串形式保存. 1.1 let 命令可以用于直接执行基本操作: 当我使用 let 的时候,我们不使用 $ 符号引用变量. no1=7;no2=8; e

linux学习:特殊符号,数学运算,图像与数组与部分终端命令用法整理

一:特殊符号用法整理 算术比较-eq 等于-ne 不等于-gt 大于-lt 小于-ge 大于或等于-le 小于或等于-a 逻辑与 and &&-o 逻辑或 or ||[ $var -eq 0 ]    #当$var等于0时,返回真[ $var -ne 0 ]    #当$var为非0时,返回真[ $var1 -ne 0 -a $var2 -gt 2 ][ $var1 -ne 0 -o $var2 -gt 2 ] 字符串比较[[ $str1 = $str2 ]]     #当str1等于st