算术运算:
Shell允许在某些情况下对算术表达式进行求值,比如:let和declare 内置命令,(( ))复合命令和算术扩 展。求值以固定宽度的整数进行,不检查溢出,尽管除以0 被困并标记为错误。运算符及其优先级,关 联性和值与C语言相同。以下运算符列表分组为等优先级运算符级别。级别按降序排列优先。
注意:bash 只支持整数,不支持小数
乘法符号有些场景中需要转义
实现算术运算:
(1) let var=算术表达式
(2) ((var=算术表达式)) 和上面等价
(3) var=$[算术表达式]
(4) var=$((算术表达式))
(5) var=$(expr arg1 arg2 arg3 ...)
(6) declare -i var = 数值
(7) echo '算术表达式' | bc (只有bc支持小数点运算)
其他运算方式都不支持小数点运算
举例演示:但是结果运算不是外面想要的结果?怎么办?
let var=算术表达式
var=$[算术表达式]
var=$((算术表达式))
echo '算术表达式' | bc
expr运算
[root@centos8 ~]# type expr expr is /usr/bin/expr [root@centos8 ~]# expr 2 + 5 7 [root@centos8 ~]# expr 2+5 2+5 [root@centos8 ~]# expr 3 + 5 8 [root@centos8 ~]# expr 4 + 5 9 [root@centos8 ~]# expr 4 / 2 2 [root@centos8 ~]# expr 4 / 5 0 [root@centos8 ~]# expr 4 * 5 expr: syntax error: unexpected argument ‘1.txt’ [root@centos8 ~]# expr 4 \* 5 20 [root@centos8 ~]# expr (4 * 5) -bash: syntax error near unexpected token `4' [root@centos8 ~]#
其他运算方式都不支持小数点运算,所以4/5,结果为0