運算子!/bin/bash#基本運算子val=`expr 2 + 2`echo "兩數之和為${val}"#算數運算子#*需要反斜線a=10b=20val=`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 $b / $a`echo "b / a : $val"val=`expr $b % $a`echo "b % a : $val"#關係運算子a=10b=20#運算子 說明 舉例#-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。#if [ $a -eq $b ]then echo "a 和 b 相等"else echo "a 和 b 不相等"fi#布林運算子#運算子 說明 舉例#! 非運算,運算式為 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。if [ $a != $b ]then echo "a 不等於 b"else echo "a 等於 b"fiif [ $a > 0 -a $b > 0 ]then echo "a 和 b 都 大於0 成立"else echo "a 和 b 都 大於0 不成立"fi#邏輯運算子#運算子 說明 舉例#&& 邏輯的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false#|| 邏輯的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 trueif [[ $a > 0 && $b > 0 ]]then echo "a>0 and b>0"else echo "a>0 and b>0 不成立"fi#字串運算子#運算子 說明 舉例# = 檢測兩個字串是否相等,相等返回 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。a="abc"b="def"if [ $a = $b ]then echo "a 和 b 相等"else echo "a 和 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。#變數 file 表示檔案file="/User/a7890/Documents/shellTest/test1.sh"if [ -r $file]then echo "test1.sh 檔案可讀"else echo "test1.sh 檔案不可讀"fi