天天看點

學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

 算術運算:

Shell允許在某些情況下對算術表達式進行求值,比如:let和declare 内置指令,(( ))複合指令和算術擴 展。求值以固定寬度的整數進行,不檢查溢出,盡管除以0 被困并标記為錯誤。運算符及其優先級,關 聯性和值與C語言相同。以下運算符清單分組為等優先級運算符級别。級别按降序排列優先。

注意:bash 隻支援整數,不支援小數

學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

 乘法符号有些場景中需要轉義

實作算術運算:

 (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

   let var=算術表達式

學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

   var=$[算術表達式]

學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

 var=$((算術表達式))

學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

 echo '算術表達式' | bc

學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

 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

 重點了解:

[root@centos8 ~]# i=100[root@centos8 ~]# 
[root@centos8 ~]# let i++[root@centos8 ~]# echo $i101[root@centos8 ~]# let ++i
[root@centos8 ~]# echo $i102      
學習筆記-SHELL腳本程式設計基礎-算術運算-20210401

[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