1.基本運(yùn)算
+ : 加
- : 減
* : 乘
/ : 除
% : 取余
基本語(yǔ)法:
(1)“$((運(yùn)算式))”或“$[運(yùn)算式]”
[root@localhost shelldata]# echo $((1+3))
4
[root@localhost shelldata]# echo $[3*7]
21
(2)expr 運(yùn)算式
[root@localhost shelldata]# expr 1+4
1+4
[root@localhost shelldata]# expr 1 + 4
5
[root@localhost shelldata]# expr 3 /* 4
expr: 語(yǔ)法錯(cuò)誤
[root@localhost shelldata]# expr 3 \* 4
12
[root@localhost shelldata]# expr `expr 2 + 3 ` \* 4
20
- expr后面表達(dá)式數(shù)字和運(yùn)算符之間必須空格隔開
- expr后面表達(dá)式乘號(hào)(*)前邊必須加反斜杠(\)才能實(shí)現(xiàn)乘法運(yùn)算;
2.關(guān)系運(yùn)算符
- 關(guān)系運(yùn)算符只支持?jǐn)?shù)字,不支持字符串,除非字符串的值是數(shù)字
- 下表列出了常用的關(guān)系運(yùn)算符,假定變量 a 為 10,變量 b 為 20:
| 運(yùn)算符 | 說(shuō)明 | 舉例 | 備注 |
|---|---|---|---|
| -eq | 檢測(cè)兩個(gè)數(shù)是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 | equal |
| -ne | 檢測(cè)兩個(gè)數(shù)是否不相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 | not equal |
| -gt | 檢測(cè)左邊的數(shù)是否大于右邊的,如果是,則返回 true。 | [ $a -gt $b ] 返回 false。 | greater than |
| -lt | 檢測(cè)左邊的數(shù)是否小于右邊的,如果是,則返回 true。 | [ $a -lt $b ] 返回 true。 | less than |
| -ge | 檢測(cè)左邊的數(shù)是否大于等于右邊的,如果是,則返回 true。 | [ $a -ge $b ] 返回 false。 | great than or equal |
| -le | 檢測(cè)左邊的數(shù)是否小于等于右邊的,如果是,則返回 true。 | [ $a -le $b ] 返回 true。 | less than or equal |
3.布爾運(yùn)算符
下表列出了常用的布爾運(yùn)算符,假定變量 a 為 10,變量 b 為 20:
| 運(yùn)算符 | 說(shuō)明 | 舉例 |
|---|---|---|
| ! | 非運(yùn)算,表達(dá)式為 true 則返回 false,否則返回 true。 | [ ! false ] 返回 true。 |
| -o | 或運(yùn)算,有一個(gè)表達(dá)式為 true 則返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
| -a | 與運(yùn)算,兩個(gè)表達(dá)式都為 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
4.邏輯運(yùn)算符
以下介紹 Shell 的邏輯運(yùn)算符,假定變量 a 為 10,變量 b 為 20:
| 運(yùn)算符 | 說(shuō)明 | 舉例 |
|---|---|---|
| && | 邏輯的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
| || | 邏輯的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
5.字符串運(yùn)算符
下表列出了常用的字符串運(yùn)算符,假定變量 a 為 "abc",變量 b 為 "efg":
| 運(yùn)算符 | 說(shuō)明 | 舉例 |
|---|---|---|
| = | 檢測(cè)兩個(gè)字符串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 |
| != | 檢測(cè)兩個(gè)字符串是否相等,不相等返回 true。 | [$a != $b ] 返回 true。 |
| -z | 檢測(cè)字符串長(zhǎng)度是否為0,為0返回 true。 | [ -z $a ] 返回 false。 |
| -n | 檢測(cè)字符串長(zhǎng)度是否為0,不為0返回 true。 | [ -n "$a" ] 返回 true。 |
| $ | 檢測(cè)字符串是否為空,不為空返回 true。 | [ $a ] 返回 true。 |
6.文件測(cè)試運(yùn)算符
文件測(cè)試運(yùn)算符用于檢測(cè) Unix 文件的各種屬性。
屬性檢測(cè)描述如下:
| 操作符 | 說(shuō)明 | 舉例 |
|---|---|---|
| -d file | 檢測(cè)文件是否是目錄,如果是,則返回 true。 | [ -d $file ] 返回 false。 |
| -f file | 檢測(cè)文件是否是普通文件(既不是目錄,也不是設(shè)備文件),如果是,則返回 true。 | [ -f $file ] 返回 true。 |
| -r file | 檢測(cè)文件是否可讀,如果是,則返回 true。 | [ -r $file ] 返回 true。 |
| -w file | 檢測(cè)文件是否可寫,如果是,則返回 true。 | [ -w $file ] 返回 true。 |
| -x file | 檢測(cè)文件是否可執(zhí)行,如果是,則返回 true。 | [ -x $file ] 返回 true。 |
| -s file | 檢測(cè)文件是否為空(文件大小是否大于0),不為空返回 true。 | [ -s $file ] 返回 true。 |
| -e file | 檢測(cè)文件(包括目錄)是否存在,如果是,則返回 true。 | [ -e $file ] 返回 true。 |