学习笔记-SHELL脚本编程基础-算术运算-20210401_算术运算

 算术运算:

Shell允许在某些情况下对算术表达式进行求值,比如:let和declare 内置命令,(( ))复合命令和算术扩 展。求值以固定宽度的整数进行,不检查溢出,尽管除以0 被困并标记为错误。运算符及其优先级,关 联性和值与C语言相同。以下运算符列表分组为等优先级运算符级别。级别按降序排列优先。

注意:bash 只支持整数,不支持小数

学习笔记-SHELL脚本编程基础-算术运算-20210401_算术运算_02

 乘法符号有些场景中需要转义

实现算术运算:

 (1) let var=算术表达式

(2) ((var=算术表达式)) 和上面等价

(3)  var=$[算术表达式]

(4) var=$((算术表达式))

(5) var=$(expr arg1 arg2 arg3 ...)

(6) declare -i var = 数值

(7) echo '算术表达式' | bc (只有bc支持小数点运算

其他运算方式都不支持小数点运算

举例演示:但是结果运算不是外面想要的结果?怎么办?

学习笔记-SHELL脚本编程基础-算术运算-20210401_脚本编程_03

   let var=算术表达式

学习笔记-SHELL脚本编程基础-算术运算-20210401_脚本编程_04

   var=$[算术表达式]

 学习笔记-SHELL脚本编程基础-算术运算-20210401_脚本编程_05

 var=$((算术表达式))

学习笔记-SHELL脚本编程基础-算术运算-20210401_SHELL_06

 echo '算术表达式' | bc

学习笔记-SHELL脚本编程基础-算术运算-20210401_算术运算_07

 expr运算

[root@centos8 ~]# type expr
expr is /usr/bin/expr
[root@centos8 ~]# expr 2 + 57[root@centos8 ~]# expr 2+52+5[root@centos8 ~]# expr 3 + 58[root@centos8 ~]# expr 4 + 59[root@centos8 ~]# expr 4 / 22[root@centos8 ~]# expr 4 / 50[root@centos8 ~]# expr 4 * 5expr: syntax error: unexpected argument ‘1.txt’
[root@centos8 ~]# expr 4 \* 520[root@centos8 ~]# expr (4 * 5)-bash: syntax error near unexpected token `4'[root@centos8 ~]#

 其他运算方式都不支持小数点运算,所以4/5,结果为0

学习笔记-SHELL脚本编程基础-算术运算-20210401_SHELL_08

 重点理解:

[root@centos8 ~]# i=100[root@centos8 ~]# 
[root@centos8 ~]# let i++[root@centos8 ~]# echo $i101[root@centos8 ~]# let ++i
[root@centos8 ~]# echo $i102

学习笔记-SHELL脚本编程基础-算术运算-20210401_脚本编程_09

 

 

[root@centos8 ~]# i=100;let j=i++;echo i=$i,j=$j
i=101,j=100

说明:j=i++,   i在前先用,先把j=i,然后再给i赋值去加+,因为j=i,i的初始值100,i得加1是101,j还是100

[root@centos8 ~]# i=100;let j=++i;echo i=$i,j=$j
i=101,j=101

说明:j=++i,1++;i在后,+在前相当于是先加,i就是100+1,最后赋值给j,j=i=101

 

 

学习笔记-SHELL脚本编程基础-算术运算-20210401_脚本编程_10

 

 

 j=i++,   i在前先用,先把j=i,然后再给i赋值去加+,因为j=i,i的初始值100,i得加1是101,j还是100

 j=++i,1++;i在后,+在前相当于是先加,i就是100+1,最后赋值给j,j=i=101