算术运算
使用expr - 整数运算
expr可以用来进行算术求值,他将会输出求值的结果。可以使用反单引号``或者等价的$()将其输出的结果赋值给其他变量。
注意变量要使用$
out=`expr 5 + 7` echo $out out=$(expr $out + 5) echo $out
expr可以进行的运算有:+, -, *, /, %, >, <, >=, <=, =, |, & ,其中* < >符号要使用转移字符才能够让bash识别。不能进行幂运算。
expr还可以对字符串进行处理,包括match、substr、index、length
使用$[ * ],在其中进行算术运算,可以省略书写`expr *`,同时使用变量不用加$。另外,可以使用**表示幂运算。
i=2 out=$[i +7] echo $out
使用C语言风格 - 整数运算
这里,双括号中的变量不需要使用$。
在双括号中时直接可以进行C风格的代码执行的,这里的$表明,会将C代码的执行结果作为一个右操作数。
可以使用**表示幂运算
val=10 out=$((val+1)) echo $out
也可以不赋值,直接使用
val=10 ((out=val+1+5)) echo $out
使用let运算 - 整数运算
let运算
i=1 b=2 let n=b**10-i
echo $n
以上算术运算只能对整数进行计算,下边介绍浮点数的运算
bc - 浮点运算
bc是一个广泛使用的数值计算环境,这里只介绍简单的使用,更多请参见 man bc
在安装有bc的机器上:
1. 在shell中输入bc即可进行计算。
2. 编写好bc计算文件,可以直接bc file_name进行计算
3. 使用管道|,将上一个命令的输出作为输入,进行计算。
使用bc进行计算需要注意:
1. 使用时要设置scale,否则小数默认为0位
2. 可以设置输入输出的进制,ibase obase
3. 支持数学运算需要加上特定参数。“bc -l”。可以使用s、c、a、l、j、e,分表表示函数sin/cos/atan/ln/bessel function/exponential function
#!/bin/bash echo "scale=7; 355/113" | bc echo "ibase=16; FFFF" | bc echo "obase=16; 65535" | bc echo "scale=50;a(1)*4" | bc -l
使用$()或者反逗点``,将计算结果取出来:
#!/bin/bash c=$(echo "scale=7; 355/113" | bc ) echo $c c=`echo "scale=7; 355/113" | bc ` echo $c