1、declare聲明變量類(lèi)型
命令格式:declare [+/-][選項(xiàng)] 變量名;
參數(shù)說(shuō)明:
- -:給變量設(shè)定類(lèi)型屬性;
- +:取消變量的類(lèi)型屬性;
注意:取消命令是+,設(shè)定命令是-,和我們通常的認(rèn)知相反?。?!
選項(xiàng)說(shuō)明:
- i:將變量聲明為整數(shù)型(integer);
- x:將變量聲明為環(huán)境變量;
- p:顯示指定變量的被聲明的類(lèi)型;
聲明變量num1,執(zhí)行 declare -p num1 查看num1的類(lèi)型。
給變量設(shè)定整數(shù)類(lèi)型 declare -i num1,再次查看num1的類(lèi)型。
給變量取消整數(shù)類(lèi)型 declare +i num1,再次查看num1的類(lèi)型。
整個(gè)過(guò)程如下圖所示:

2、數(shù)值運(yùn)算
2.1、方法1
使用declare為結(jié)果變量定義類(lèi)型。
[root@VM-0-8-centos sh]# aa=11
[root@VM-0-8-centos sh]# bb=22
[root@VM-0-8-centos sh]# declare -i cc=$aa+$bb
[root@VM-0-8-centos sh]# echo $cc

此種方式不支持小數(shù)運(yùn)算
2.2、方法2
使用expr或let數(shù)值運(yùn)算工具。

注意:命令$(expr $aa + $bb)之中,+左右必須要有空格, let與expr一樣?。?!
此種方式不支持小數(shù)運(yùn)算
2.3、方法3
使用$((運(yùn)算式)) 或$[運(yùn)算式]。

強(qiáng)烈推薦使用這種方式?。?!
此種方式不支持小數(shù)運(yùn)算
3、運(yùn)算符優(yōu)先級(jí)
| 優(yōu)先級(jí) | 運(yùn)算符 | 說(shuō)明 |
|---|---|---|
| 13 | -, + | 單目負(fù)、單目正 |
| 12 | !, ~ | 邏輯非、按位取反或補(bǔ)碼 |
| 11 | *,/, % | 乘、除、取模 |
| 10 | +, - | 加、減 |
| 9 | << , >> | 按位左移、按位右移 |
| 8 | <=, >=, < , > | 小于或等于、大于或等于、小于、大于 |
| 7 | == , != | 等于、不等于 |
| 6 | & | 按位與 |
| 5 | ^ | 按位異或 |
| 4 | | | 按位或 |
| 3 | && | 邏輯與 |
| 2 | || | 邏輯或 |
| 1 | =,+=,-=,*=,/=,%=,&=, ^= ,|=, <<=, >>= | 賦值、運(yùn)算且賦值 |
執(zhí)行下方計(jì)算命令:
echo $(( (11+3)*3/2 ))
echo $(( 14%3 ))
echo $(( 1&&0 ))
echo $(( 1||0 ))
結(jié)果如下圖所示:
