Linux Shell運算符
Shell中的運算符可分爲算數運算符、關係運算符、布爾運算符、字符串運算符和文件測試運算符
1.算術運算符
a=2, b=1
Operator | Description | Example |
+ | 加法 | `expr $a + $b` # 3 |
- | 減法 | `expr $a - $b` # 1 |
* | 乘法 | `expr $a \* $b` # 2, *需轉義 |
/ | 除法 | `expr $a / $b' # 2 |
% | 取餘 | `expr $a % $b' # 0 |
= | 賦值 | name=value |
== | 相等比較 | [ $a == $b ] # false |
!= | 不等比較 | [ $a != $b ] # true |
注意:條件表達式要放在方括號之間,並且要有空格,例如 [$a==$b] 是錯誤的,必須寫成 [ $a == $b ]
2.關係運算符
關係運算符只支持數字,不支持字符串,除非字符串的值是數字
a=1, b=2
Operator | Description | Example |
-eq | 判斷是否相等 | [ $a -eq $b ] # false |
-ne | 是否不相等 | [ $a -ne $b ] # true |
-gt | 是否大於 | [ $a -gt $b ] # false |
-lt | 是否小於 | [ $a -lt $b ] # true |
-ge | 是否大於等於 | [ $a -ge $b ] # false |
-le | 是否小於等於 | [ $a -le $b ] # true |
3.布爾運算符
Operator | Description | Example |
! | 非運算 | [ ! false ] 返回 true |
-o | 或運算 | [ true -o false ] 返回true |
-a | 與運算 | [ true -a false] 返回false |
4.字符串運算符
a=abc, b=def
Operator | Description | Example |
= | 是否相等 | [ $a = $b ] # false |
!= | 是否不相等 | [ $a != $b ] # true |
-z | 長度是否爲0 | [ -z $a ] # false |
-n | 長度是否不爲0 | [ -n $a ] # true |
str | 是否爲空 | [ $a ] # false |
5.文件測試運算符
文件測試運算符用於檢測 Unix 文件的各種屬性
Operator | Description | Example |
-b file | 是否是塊設備文件 | [ -b $file ] |
-c file | 是否是字符設備文件 | [ -c $file ] |
-d file | 是否是目錄 | [ -d $file ] |
-f file | 是否是普通文件(既不是目錄,也不是設備文件) | [ -f $file ] |
-g file | 是否設置了 SGID 位 | [ -g $file ] |
-k file | 是否設置了粘着位(Sticky Bit) | [ -k $file ] |
-p file | 是否是具名管道 | [ -p $file ] |
-u file | 是否設置了 SUID 位 | [ -u $file ] |
-r file | 是否可讀 | [ -r $file ] |
-w file | 是否可寫 | [ -w $file ] |
-x file | 是否可執行 | [ -x $file ] |
-s file | 是否不爲空(文件大小是否大於0), 不爲空返回true | [ -s $file ] |
-e file | 文件(包括目錄)是否存在 | [ -e $file ] |