一、簡介
在我們寫shell指令碼的過程中,經常需要作比較判斷,例如比較哪個數字大,判斷檔案是否存在,判斷檔案是否是目錄,判斷是否為真等操作。有時候我們還需要做執行,例如加減乘除等等,今天就來簡單介紹比較表示式和執行表示式。
二、shell比較判斷
1、檔案狀態:
表示式:[ -e 檔案路徑 ] 有空格隔開
例如:[ -e /root ] 判斷/root 是否存在
(1) -e 是否存在 存在為真
(2) -d 是否是目錄 是目錄為真
(3) -f 是否是檔案 是檔案 為真
(4) -x 是否有執行許可權 有執行許可權為真
(5) -w 是否有寫許可權 有寫權為真
(6) -r 是否有讀許可權 有讀許可權為真
2、整數值比較
[ num1 選項 num2 ]
例如:[ 2 -eq 2 ] 或者用變數[ $a -eq $b ]
(1) -eq 等於
(2) -ne 不等於
(3) -gt 大於
(4) -ge 大於等於
(5) -lt 小於
(6) -le 小於等於
3、字元比較
[ 「string字串1」 選項 「string字串2」 ]
例如:[ $name == 「jim」 ]
注意:選項和字串兩邊有空格!!!!字元一定用雙引號引住。
(1) = = 相等 相等為真
(2) != 不相等 不相等為真 0
(3) -z 空 空為真
(4) !-z 非空 非空為真
4、邏輯判斷:(兩個或兩個以上判斷條件時使用邏輯比較)
(1) 邏輯 與:
&& 多個條件同時成立 [條件1] && [條件2]
(2) 邏輯 或:
|| 多個條件只要有乙個條件成了就可以 [條件1] || [條件2]
(3) 邏輯 非 !=取反
ps:兩種表達方式:
1.&&----[ 10 -gt 8 ] && [ 5 -lt 6 ] 2. -a 用法:[ 10 -gt 8 -a 5 -lt 6 ]
1.||----[ 10 -gt 8 ] || [ 5 -lt 6 ] 2. -o 用法:[ 10 -gt 8 -0 5 -lt 6 ]
(4) 呼叫變數時"" 與』『的區別
字元用兩個都一樣輸出,當變數時,單引號輸出字元,雙引號 使用變數的功能
例如:a =10 b=10
"$a + b"=
num2
結果是10
+10=n
um2′
b"=num2 結果是 10 + 10 =num2 '
b"=num
2結果是
10+1
0=nu
m2′a + $b』=num2 結果是 $a + $b =num2
三、shell運算語法
1、運算子
加+減 -
乘*除 /
取餘 %
自加1 ++ i=0;let i++;echo $i
自減1 – j=10;let j-- ; echo $j
2、運算命令
(1) expr命令 運算子: + - * / %
expr 整數1 整數2… 整數值由變數提供,直接給出運算結果
expr $num1 + $num2`
(2) let命令
操作變數值,只運算,不輸出結果
i=0;let i++;echo $i
i=0;i++;echo $i
(3) 使用$或者 (()
)表示式
(需要借
助ech
o輸出結
果,運算
型別與e
xpr類
似)ps
:乘法∗
不需要加
轉義符使
用變數時
,直接指
定變數名
,不用加
(())表示式(需要借助echo輸出結果,運算型別與expr類似) ps:乘法* 不需要加轉義符 \ 使用變數時,直接指定變數名,不用加
(())表達
式(需要
借助ec
ho輸出
結果,運
算型別與
expr
類似)p
s:乘法
∗不需要
加轉義符
使用變數
時,直接
指定變數
名,不用
加符號echo $
echp $(())
1)例子:a=10 b=10
沒加轉義:
加轉義:
(4) 變數的遞增、遞減等操作
表示式的簡化:
+=x 每次自加x
-=x 每次自減x
i=i+2 ----> i+=2
i=i-2 ----> i-=2
i=i-1 ----> i–
i=i2 ----> i*=2
i=i+1 ----> i++
i=i%2 ----> i%=2
(5) 實戰例子:加減乘除計算器
下期預告:shell指令碼-條件判斷語句if和迴圈語句for
Linux Shell指令碼程式設計 比較運算子
運算子描述示例 檔案比較運算子 e filename 如果 filename 存在,則為真 e var log syslog d filename 如果 filename 為目錄,則為真 d tmp mydir f filename 如果 filename 為常規檔案,則為真 f usr bin g...
Linux Shell指令碼程式設計 比較運算子
運算子 描述 示例檔案比較運算子 e filename 如果 filename 存在,則為真 e var log syslog dfilename 如果 filename 為目錄,則為真 d tmp mydir ffilename 如果 filename 為常規檔案,則為真 f usr bin gr...
linux shell 比較總結
整數比較符號 eq等於,如if 1 eq 2 ne不等於,如if 1 nq 2 gt大於,如if 1 gt 2 ge大於等於,如if 1 ge 2 lt小於,如if 1 lt 2 le小於等於,如if 1 le 2 小於,如 1 2 小於等於,如 1 2 大於,如 1 2 大於等於,如 1 2 字串...