Linux shell指令碼 比較判斷和運算語句

2021-09-23 18:15:08 字數 2838 閱讀 8550

一、簡介

在我們寫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 字串...