1. 程式人生 > >Linux Shell基本運算子

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
結果 200
/ expr $b / $a結果 2
% expr $b % $a結果0
= a=$b將變數b賦值給a
== [ $a == $b ] 返回false
!= [ $a != $b ] 返回true
注:條件表示式要放在方括號之間,並且要有空格。
乘號* 前邊必須加反斜槓\ 才能進行乘法運算。

關係運算符 關係運算符只支援數字,不支援字串,除非字串的值是數字。 假定變數a為10,b為20.

  1. -ep : 檢測兩個數是否相等,相等返回true. 例:[ $a -eq $b ] 返回false

  2. -ne : 檢測兩個數是否不相等。 例: [ $a -ne $b ] 返回true

  3. -gt 相當於 > 例:[ $a -gt $b ] 返回false

  4. -lt 相當於 < 例:[ $a -lt $b ] 返回true

  5. -ge 相當於 >= 例:[ $a -ge $b ] 返回false

  6. -le 相當於 <= 例:[ $a -le $b ] 返回false

布林運算子

假定變數a 、b值如上

  1. ! 非運算

    例: [ !false ] 返回true

  2. -o 或運算

    例: [ $a -lt 20 -o $b -gt 100 ] 返回true

  3. -a 與運算

    例: [ $a -lt 20 -a $b -gt 100 ] 返回false

邏輯運算子 假定變數a為10,b為20

  1. && 邏輯運算子 AND

    例:[[ $a -lt 100 && $b -gt 100 ]] 返回false

  2. || 邏輯的OR

    例: [[ $a -lt 100 || $b -gt 100 ]] 返回true

字串運算子 假定變數a為”abc“, 變數b為”efd“

  1. =(!=) 檢測兩個字串是否相等。 例:

    [ $a = $b ] 返回false [ $a != $b ] 返回true

  2. -z 檢測字串長度是否為0,為0為返回true。

    例: [ -z $a ] 返回false

  3. -n 檢測字串長度是否為0,不為0,返回true 。

    例: [ -n “$a”] 返回true

  4. 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