shell 表示式和運算子

2021-07-13 19:54:38 字數 3724 閱讀 8531

1.      算術運算子

原生bash不支援簡單的數**算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。expr 是一款表示式計算工具,使用它能完成表示式的求值操作。

val=`expr 2 + 2`

l  使用的是反引號 ` 而不是單引號 '

l  表示式和運算子之間要有空格

l  條件表示式要放在方括號之間,並且要有空格,例如: [$a==$b] 是錯誤的,必須寫成 [ $a == $b ]。

l  乘號(*)前邊必須加反斜槓(\)才能實現乘法運算;

+        加法         `expr $a + $b` 結果為 30。

-         減法         `expr $a - $b` 結果為 10。

*        乘法         `expr $a \* $b` 結果為  200。

/         除法         `expr $b / $a` 結果為 2。

%       取餘         `expr $b % $a` 結果為 0。

=        賦值         a=$b 將把變數 b 的值賦給 a。

==      相等。用於比較兩個數字,相同則返回 true。        [ $a == $b ] 返回 false。

!=       不相等。用於比較兩個數字,不相同則返回 true。        [ $a != $b ] 返回 true。

1.      關係運算子

關係運算子只支援數字,不支援字串,除非字串的值是數字。

-eq

檢測兩個數是否相等,相等返回

true。

[ $a -eq $b ]

返回false。

-ne

檢測兩個數是否相等,不相等返回

true。

[ $a -ne $b ]

返回true。

-gt

檢測左邊的數是否大於右邊的,如果是,則返回

true。

[ $a -gt $b ]

返回false。

-lt

檢測左邊的數是否小於右邊的,如果是,則返回

true。

[ $a -lt $b ]

返回true。

-ge

檢測左邊的數是否大等於右邊的,如果是,則返回

true。

[ $a -ge $b ]

返回false。

-le

檢測左邊的數是否小於等於右邊的,如果是,則返回

true。

[ $a -le $b ]

返回true。

2.      布林運算子!

假定變數 a 為 10,變數 b 為 20:

[ ! false ]

返回true。

-o 假定變數 a 為 10,變數 b 為 20:

[ $a -lt 20 -o $b -gt 100 ]

返回true。

-a 假定變數 a 為 10,變數 b 為 20:

[ $a -lt 20 -a $b -gt 100 ]

返回false。

3.      邏輯運算子

假定變數 a 為 10,變數 b 為 20:&&

邏輯的and

[[ $a -lt 100 && $b -gt 100 ]]

返回false ||

邏輯的or

[[ $a -lt 100 || $b -gt 100 ]]

返回true

4.      字串運算子

假定變數 a 為 "abc",變數 b 為 "efg"=

檢測兩個字串是否相等,相等返回

true。

[ $a = $b ]

返回false。

!= 檢測兩個字串是否相等,不相等返回

true。

[ $a != $b ]

返回true。

-z 檢測字串長度是否為0,為

0返回true。

[ -z $a ]

返回false。

-n 檢測字串長度是否為

0,不為0返回

true。

[ -n $a ]

返回true。

str

檢測字串是否為空,不為空返回

true。

[ $a ]

返回true。

5.      檔案測試運算子

-b file

檢測檔案是否是塊裝置檔案,如果是,則返回

true。

[ -b $file ]

返回false。

-c file

檢測檔案是否是字元裝置檔案,如果是,則返回

true。

[ -c $file ]

返回false。

-d file

檢測檔案是否是目錄,如果是,則返回

true。

[ -d $file ]

返回false。

-f file

檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回

true。

[ -f $file ]

返回true。

-g file

檢測檔案是否設定了

sgid

位,如果是,則返回

true。

[ -g $file ]

返回false。

-k file

檢測檔案是否設定了粘著位

(sticky bit)

,如果是,則返回

true。

[ -k $file ]

返回false。

-p file

檢測檔案是否是具名管道,如果是,則返回

true。

[ -p $file ]

返回false。

-u file

檢測檔案是否設定了

suid

位,如果是,則返回

true。

[ -u $file ]

返回false。

-r file

檢測檔案是否可讀,如果是,則返回

true。

[ -r $file ]

返回true。

-w file

檢測檔案是否可寫,如果是,則返回

true。

[ -w $file ]

返回true。

-x file

檢測檔案是否可執行,如果是,則返回

true。

[ -x $file ]

返回true。

-s file

檢測檔案是否為空(檔案大小是否大於

0),不為空返回

true。

[ -s $file ]

返回true。

-e file

檢測檔案(包括目錄)是否存在,如果是,則返回

true。

[ -e $file ]

返回true。

運算子和表示式

運算子 1.算術運算子 定義 int i 2 1 i i 是在 使用完畢之後 2 i i 是在 之後使用 3 i i 是 3 3 是形成運算子的 4 函式是從右邊開始傳參,其中,為結束標誌 例子1 func i i i i,i 6,5,4,i,2 i最後是 7 6 5 4 7 2 例子2 i i i...

運算子和表示式

有些運算子需要兩個運算元,使用形式為 運算元 運算子 運算元,這樣的運算子就叫做二元運算子或雙目運算子,只需要乙個運算元的運算子叫做一元運算子或單目運算子。運算子具有優先順序和結合性。如果乙個表示式中有多個運算子則先進行優先順序高的運算,後進行優先順序低的運算。結合性就是指當乙個運算元左邊和右邊的運...

運算子和表示式

分享一下在c語言中運算子和表示式 1.算數運算子和算數表示式 算數 就是我們平時日常生活中的加減乘除等。在c語言中的運算符號分別為如下 加 減 乘 除 取餘 在計算機運算中也是有符號優先順序,先乘除後加減,有括號先算括號裡面的 自左向右 和平時演算法是一樣的。舉例子 2 9 7 2 8 在這個中我們...