iT邦幫忙

DAY 19
2

我與BASH shell scripting的每一天系列 第 19

我與BASH的每一天 - [19] 複合式的條件判斷

如果需要兩個以上的條件來決定下一個動作的話,就可以使用ANDOR這兩總符合條件來達成。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 條件判斷的正規化用法


上一篇
我與BASH的每一天 - [18] if 條件判斷的正規化用法
下一篇
我與BASH的每一天 - [20] 代表參數位置的特殊變數符號與shift
系列文
我與BASH shell scripting的每一天31

尚未有邦友留言

立即登入留言