![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNjV2NwEmMxIDM2YTY0MjZ3E2MilTN5kjY2IzY2UTNj9CXxAzLcRDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL4M3Lc9CX6MHc0RHaiojIsJye.png)
算術運算:
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 + 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
重點了解:
[root@centos8 ~]# i=100[root@centos8 ~]#
[root@centos8 ~]# let i++[root@centos8 ~]# echo $i101[root@centos8 ~]# let ++i
[root@centos8 ~]# echo $i102
[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