Shell算数运算
使用bc
1)例1
#!/bin/bash var1=10.46 var2=43.67 var3=33.2 var4=71 var5=$(bc << EOF scale = 4 a1 = ( $var1 * $var2) b1 = ($var3 * $var4) a1 + b1 EOF ) echo The final answer for this mess is $var5
2)例2
$ cat test11 #!/bin/bash var1=20 var2=3.14159 var3=$(echo "scale=4; $var1 * $var1" | bc) var4=$(echo "scale=4; $var3 * $var2" | bc) echo The final result is $var4
使用expr
操作符 | 描述 |
ARG1 | ARG2 | 如果ARG1 既不是null也不是零值,返回ARG1 ;否则返回ARG2 |
ARG1 & ARG2 | 如果没有参数是null或零值,返回ARG1 ;否则返回0 |
ARG1 < ARG2 | 如果ARG1 小于ARG2 ,返回1 ;否则返回0 |
ARG1 <= ARG2 | 如果ARG1 小于或等于ARG2 ,返回1 ;否则返回0 |
ARG1 = ARG2 | 如果ARG1 等于ARG2 ,返回1 ;否则返回0 |
ARG1 != ARG2 | 如果ARG1 不等于ARG2 ,返回1 ;否则返回0 |
ARG1 >= ARG2 | 如果ARG1 大于或等于ARG2 ,返回1 ;否则返回0 |
ARG1 > ARG2 | 如果ARG1 大于ARG2 ,返回1 ;否则返回0 |
ARG1 + ARG2 | 返回ARG1 和ARG2 的算术运算和 |
ARG1 - ARG2 | 返回ARG1 和ARG2 的算术运算差 |
ARG1 * ARG2 | 返回ARG1 和ARG2 的算术乘积 |
ARG1 / ARG2 | 返回ARG1 被ARG2 除的算术商 |
ARG1 % ARG2 | 返回ARG1 被ARG2 除的算术余数 |
STRING : REGEXP | 如果REGEXP 匹配到了STRING 中的某个模式,返回该模式匹配 |
match STRING REGEXP | 如果REGEXP 匹配到了STRING 中的某个模式,返回该模式匹配 |
substr STRING POS LENGTH | 返回起始位置为POS (从1 开始计数)、长度为LENGTH 个字符的子字符串 |
index STRING CHARS | 返回在STRING 中找到CHARS 字符串的位置;否则,返回0 |
length STRING | 返回字符串STRING 的数值长度 |
+ TOKEN | 将TOKEN 解释成字符串,即使是个关键字 |
(EXPRESSION) | 返回EXPRESSION 的值 |
1)例1
#!/bin/bash # An example of using the expr command var1=10 var2=20 var3=$(expr $var2 / $var1) //使用expr echo The result is $var3