iT邦幫忙

DAY 16
2

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

我與BASH的每一天 - [16] 多條件選擇 - case

  • 分享至 

  • twitterImage
  •  

我需要在程式裡加上一組條件判斷,藉此做為決定程式接下來往哪走,if/else/fi是最常用的做法,但是我想要讓程式更簡潔有結構,所以我採用casecase的條件選擇方式十分有彈性,甚至可以把正規化表示法的技巧運用在這裡,使得當選擇條件在符合某一些正規化字串內容時,進行設定的動作。

echo -n “Do you want to continue - Y/N [default N]: “
read CHK
case $CHK in
       [yY]) CHKIN="Y";;
          *) CHKIN="N";;
esac

上面的程式透過read讀入使用者的輸入(Y or N),但是我希望程式具備容錯的能力,也就是使用者在輸入Y(for yes)時,可以容許大小寫。所以運用正規化表示法的技巧 - [yY]方括號內的文字代表使用者輸入y或是Y都可以;而***代表任意字串都可以(當然包含n或N))。另外使用的技巧就是要將代表任意鍵的*放在case**中的最後面,以避免其他條件判斷的動作都不會被檢查到。

[本系列文章]

我與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的每一天 - [15] sed - 3
下一篇
我與BASH的每一天 - [17] 建立自動化的暫存檔 - mktemp
系列文
我與BASH shell scripting的每一天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言