Linux Shell基本運算子
shell基本運算子:
- 算術運算子
- 關係運算符
- 布林運算子
- 字串運算子
- 檔案測試運算子 注:原bash不支援簡單的數學運算。但可以通過awk 和expr(常用)命令來實現。 expr是一款表示式計算工具,它可以完成表示式的求值操作。 例:
#兩個數相加使用的是反引號
val =`expr 2 + 2`
echo "$val"
結果:4
注:
- 表示式和運算子之間要有空格。
- 完整的表示式要被 ` `(反引號)包括。
算術運算子 假設變數a為10,b為20
運算子 | 舉例 |
---|---|
+ | expr $a + $b 結果30 |
- | expr $a - $b 結果-10 |
* | expr $a \* $b |
/ | expr $b / $a 結果 2 |
% | expr $b % $a 結果0 |
= | a=$b將變數b賦值給a |
== | [ $a == $b ] 返回false |
!= | [ $a != $b ] 返回true |
注:條件表示式要放在方括號之間,並且要有空格。
乘號* 前邊必須加反斜槓\ 才能進行乘法運算。
關係運算符 關係運算符只支援數字,不支援字串,除非字串的值是數字。 假定變數a為10,b為20.
-
-ep : 檢測兩個數是否相等,相等返回true. 例:[ $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 ] 返回false
布林運算子
假定變數a 、b值如上
-
! 非運算
例: [ !false ] 返回true
-
-o 或運算
例: [ $a -lt 20 -o $b -gt 100 ] 返回true
-
-a 與運算
例: [ $a -lt 20 -a $b -gt 100 ] 返回false
邏輯運算子 假定變數a為10,b為20
-
&& 邏輯運算子 AND
例:[[ $a -lt 100 && $b -gt 100 ]] 返回false
-
|| 邏輯的OR
例: [[ $a -lt 100 || $b -gt 100 ]] 返回true
字串運算子 假定變數a為”abc“, 變數b為”efd“
-
=(!=) 檢測兩個字串是否相等。 例:
[ $a = $b ] 返回false [ $a != $b ] 返回true
-
-z 檢測字串長度是否為0,為0為返回true。
例: [ -z $a ] 返回false
-
-n 檢測字串長度是否為0,不為0,返回true 。
例: [ -n “$a”] 返回true
-
str 檢測字串是否為空,不為空返回true.
例: [ $a ] 返回true
檔案檢測運算子 檔案檢測運算子用於檢測unix檔案的各種屬性。 -b file 檢測檔案是否是塊裝置檔案,是則返回true
例: [ -b $file ] 返回flase
-c file 檢測檔案是否是字元裝置檔案,是返回true
例: [ -c $file ] 返回false
-d file 檢測檔案是否是目錄,如果是,則返回true.
例: [ -d $file] 返回false
-f file 檢測檔案是否是普通檔案,是返回true
例: [ -f $file ] 返回false
-g file 檢測檔案是否設定了SGID(set group id)位,如果是,返回true.
例: [ -g $file ] false
-k file 檢測檔案是否設定粘著位 (Sticky Bit),是返回true
例: [ -k $file ] false
-p file 檢測檔案是否是有名管道,是返回true
例: [ -p $file ] false
-r /-w /x file 檢測檔案是否可讀/可寫/可執行。是返回true.
例: [ -r/-w/-x $file ] false
-s file 檢測檔案是否為空(及檔案大小是否大於0),不為空true.
例: [ -s $file ] true
-e file 檢測檔案(目錄)是否存在,是返回true
例: [ -e $file ] true