shell指令碼的邏輯運算與算術運算-Linux(11)
阿新 • • 發佈:2019-01-24
邏輯運算
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
結果: