如果需要兩個以上的條件來決定下一個動作的話,就可以使用AND與OR這兩總符合條件來達成。AND表示所有的條件都必須成立;OR表示只要醫者成立即可以。在if命令中,代表AND動作的符號是**&&;代表OR動作的符號是||**。
像是我要判斷某個檔案的屬性必須同時是可執行且可讀取的,就用下圖第一個例子。如果是要判斷檔案是否屬於我這個群組,或是我自己的,就用下面這個例子:
if [ -r “$filename” ] && [ -s “$filename” ]; then
echo “$filename is readable and exectable.”
fi
if [ -O “$filename” ] || [ -G “$filename” ]; then
echo “$filename is mine or belone to my group.”
fi
搭配測試命令符號**[...]**,複合判斷的用法除了像上面的例子以外,還有更簡潔的寫法:
[ -r $filename ] && echo “$filename is readable”
[ -r $filename ] || echo “$filename is not readable”
因為echo沒有判斷,所以永遠為TRUE,加上**&&條件後必須要兩個皆為TRUE才蕙執行,所以只有檔案是可讀取的才可以。而當加上||符號時,如果檔案是不可讀取的就執行echo**動作。
系列文章]
我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
我與BASH的每一天 - [3] 利用awk來擷取特定欄位
我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2
我與BASH的每一天 - [5] 利用awk來擷取特定欄位-3
我與BASH的每一天 - [6] 利用cut來擷取特定欄位
我與BASH的每一天 - [7] grep指令的妙用 - 1
我與BASH的每一天 - [8] grep指令的妙用 - 2
我與BASH的每一天 - [9] 正規化表示法 - 1
我與BASH的每一天 - [10] 正規化表示法 - 2
我與BASH的每一天 - [11] 正規化表示法 - 3
我與BASH的每一天 - [12] 正規化表示法 - 4
我與BASH的每一天 - [13] sed - 1
我與BASH的每一天 - [14] sed - 2
我與BASH的每一天 - [15] sed - 3
我與BASH的每一天 - [16] 多條件選擇 - case
我與BASH的每一天 - [17] 建立自動化的暫存檔 - mktemp
我與BASH的每一天 - [18] if 條件判斷的正規化用法