Shell學習【運算子】

13545163656發表於2019-04-08

算數運算子

運算子 說明 舉例
+ 加法 `expr $a + $b` 
- 減法 `expr $a - $b` 
* 乘法 `expr $a \* $b` 
/ 除法 `expr $b / $a` 
% 取餘 `expr $b % $a` 
= 賦值 a=$b 將把變數 b 的值賦給 a。
== 相等。用於比較兩個數字,相同則返回 true。 [ $a == $b ] 返回 false。
!= 不相等。用於比較兩個數字,不相同則返回 true。 [ $a != $b ] 返回 true


示例:

#!/bin/bash
#author:zrc
a=5
b=10
val=`expr ${a} + ${b}`
echo "a + b : ${val}"
val=`expr ${a} - ${b}`
echo "a - b : ${val}"
val=`expr ${a} \* ${b}`
echo "a * b : ${val}"
val=`expr ${a} / ${b}`
echo "a / b : ${val}"
#注意空格使用
if [ $a == $b ];then
	echo " a = b "
fi
if [ $a != $b ];then
	echo " a != b "
fi


關係運算子

關係運算子不支援字串(字串見後面),只支援數字 例:a=5  b=10

運算子 說明 舉例
-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。


示例:

#!/bin/bash
#author:zrc
a=5
b=10
if [ $a -eq $b ];then
	echo " $a -eq $b : a 等於 b "
    else
	echo " $a -eq $b : a 不等於 b "
fi
if [ $a -ne $b ];then
	echo " $a -ne $b : a 不等於 b "
    else
	echo " $a -ne $b : a 等於 b "
fi


布林運算子


例:a=5  b=10

運算子 說明 舉例
! 非運算,表示式為 true 則返回 false,否則返回 true。 [ ! false ] 返回 true。
-o 或運算,有一個表示式為 true 則返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a 與運算,兩個表示式都為 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。


邏輯運算子

注意使用邏輯運算子需要多重使用[]符號  例:a=5  b=10

true and flase 返回 false

true and false 返回 true

運算子 說明 舉例
&& 邏輯的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 邏輯的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true


字串運算子

下表列出了常用的字串運算子,假定變數 a 為 "aaa",變數 b 為 "bbb":

運算子 說明 舉例
= 檢測兩個字串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!= 檢測兩個字串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z 檢測字串長度是否為0,為0返回 true。 [ -z $a ] 返回 false。
-n 檢測字串長度是否為0,不為0返回 true。 [ -n "$a" ] 返回 true。
$ 檢測字串是否為空,不為空返回 true。 [ $a ] 返回 true。


示例:

#!/bin/bash
#author:zrc
a="aaa"
b="bbb"
if [ $a = $b ];then
	echo " $a = $b : a 等於 b "
    else
	echo " $a = $b : a 不等於 b "
fi
if [ $a != $b ];then
	echo " $a != $b : a 不等於 b "
    else
	echo " $a != $b : a 等於 b "
fi
if [ -z $b ];then
	echo "-z $b : 字元長度為0 "
    else
	echo "-z $b : 字元長度為${#b} "
fi
if [ -n $b ];then
	echo "-z $b : 字元長度不為0 "
    else
	echo "-z $b : 字元長度為${#b} "
fi
if [ $b ];then
	echo "$b : 字串不為空 "
    else
	echo "$b : 字串為空 "
fi


檔案運算子

運算子 說明 舉例
-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。



 轉載學習:
   runoob.com 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31441024/viewspace-2640375/,如需轉載,請註明出處,否則將追究法律責任。

相關文章