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