五、添加数学运算
shell脚本中添加数学运算
1、使用 expr 命令
Bourne shell提供了一个特别的命令用来处理数学表达式。expr命令允许在命令行 上处理数学表达式
语法:
expr n 运算符 n
例1: 运算符两侧必须有空格
[root@localhost ~]# 1+5 bash: 1+5: 未找到命令... [root@localhost ~]# expr 1+5 1+5 [root@localhost ~]# expr 1 + 5 6 [root@localhost ~]# 1 + 5 bash: 1: 未找到命令...
许多expr命令操作符在shell中另有含义(比如星号,)。当它们出现在在expr命令中时,会得到一 些诡异的结果。这时候需要使用转义符( \ )
例2:
[root@localhost ~]# expr 1 * 5 expr: 语法错误 [root@localhost ~]# expr 1 \* 5 5 [root@localhost ~]# expr 1 | 5 bash: 5: 未找到命令... [root@localhost ~]# expr 1 \| 5 1
| 操 作 符 | 描 述 |
| 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的值 |
如果使用expr的运算结果,赋值给变量,需要使用 ` ` 将expr运算括起来
[wang@localhost ~]$ a=`expr 3 + 2` [wang@localhost ~]$ echo $a 5
2、使用方括号[]
在bash中,将一个数学运算结果赋给某个变量时,可以用美元符和 方括号($[ operation ])将数学表达式围起来。
语法:
变量=$[数学运算]
例3:
[root@localhost ~]# a=$[2*5] [root@localhost ~]# echo $a 10
在使用方括号来计算公式时,不用担心shell会误解乘号或其他符号,不需要使用转义符( \ )
3、浮点运算
bash shell数学运算符只支持整数运算。若要进行任何实际的数学计算,可使用如下方式:
1)bc计算器
bc是内建的bash计算器,最常见的方案 。
在shell提示符下通过 bc 命令访问bash计算器,然后就可以进行数学运算了
[root@localhost ~]# 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 + 2.3 14.3
bash计算器能够识别:
- 数字(整数和浮点数)
- 变量(简单变量和数组)
- 注释(以#或C语言中的/* */开始的行)
- 表达式
- 编程语句(例如if-then语句)
- 函数
要退出bash计算器,你必须输入quit。
2)在脚本中使用bc
如何在shell脚本中帮助处理浮点运算的。用命令替换运行bc命令,并将输出赋给一个变量。
基本格式如下:
variable=$(echo "options; expression" | bc)
options允许你设置变量。如果你需要不止一个变量,可以用分号将其分开。 expression参数定义了通过bc执行的数学表达式
例如:
#vim test #!/bin/bash var1=$(echo "scale=4; 3.44 / 5" | bc) echo The answer is $var1
这个方法适用于较短的运算,但有时你会涉及更多的数字。如果需要进行大量运算,在一个 命令行中列出多个表达式,使用分界符输入重定向,它允许你直接在命令行中重定向数据。在shell脚本中, 你可以将输出赋给一个变量。
例子:
[root@node2 tmp]# cat bc.sh #!/bin/bash # num1=14.5 num2=5 num3=32.4 num4=`bc << EOF scale=4 a=($num1 / $num2) b=($num3 / $num2) a + b EOF ` echo $num4 [root@node2 tmp]# ./bc.sh 9.3800
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/14581673.html

浙公网安备 33010602011771号