1. 程式人生 > >shell指令碼的邏輯運算與算術運算-Linux(11)

shell指令碼的邏輯運算與算術運算-Linux(11)

邏輯運算

shell指令碼程式設計中提供了條件結構,根據條件的不同而進行不同的操作。

條件測試

兩種方式:

  • test 條件表示式
  • [ 條件表示式 ] 必須在[]前後加空格,否則報錯。
    測試一下:


輸出結果為:

可測試的條件型別

字串

比較方式 結果
string1 = string2 相同則為真
string1 != string2 不同則為真
-n string 字串不為空則為真
-z string 為空則為真

要注意的是 = 兩邊必須要有空格

算術比較

比較方式 結果
expression1 -eq expression2 相等則為真
expression1 -ne expression2 不等則為真
expression1 -gt expression2 expression1大於expression2則為真
expression1 -ge expression2 expression1大於或者等於expression2為真
expression1 -lt expression2 expression1小於expression2為真
expression1 -le expression2 expression1小於或者等於expression2為真

檔案條件測試

比較方式 結果
-d file 檔案是目錄則為真
-e file 檔案存在則為真
-f file 普通檔案則為真
-r file 檔案可讀則為真
-s file 檔案長度不為0則為真
-w file 檔案可寫則為真
-x file 檔案可執行則為真

邏輯運算

and運算

運算子為&&

statement1 && statement2 && statement3

順序執行語句,第一條為真才會判斷下一個。
測試程式碼:

#! /bin/bash
if [ 1 -gt 0 ] && echo 第二條命令 && [ 0 -gt 1 ]
then
echo yes
else
echo no
fi

結果:

or運算

statement1 || statement2 || statement3

順序執行,直到找到一條命令為真,則停止執行以後命令。

算術運算

expr命令

格式:

expr expression
  • 運算子號前後要有空格,並且乘法要轉義,即 "\*"
  • 啟用新的shell執行expr命令

$((expression))

$((expression))

let命令

格式:

let expression
  • 變數前可以省略$
    上述三種的測試程式碼:
#! /bin/bash
a=1
b=2
echo `expr $a \* $b`
echo $(($a*$b))
let c=a*b
echo $c

結果: