Linux Shell程式設計(19)——測試與分支

尹成發表於2014-09-30
case和select結構在技術上說不是迴圈,因為它們並不對可執行的程式碼塊進行迭代.但是和迴圈相似的是,它們也依靠在程式碼塊的頂部或底部的條件判斷來決定程式的分支.


在程式碼塊中控制程式分支


case (in) / esac
在shell中的case同C/C++中的switch結構是相同的.它允許通過判斷來選擇程式碼塊中多條路徑中的一條.它的作用和多個if/then/else語句相同,是它們的簡化結構,特別適用於建立目錄.
case "$variable" in 


?"$condition1" ) 
?command... 
?;; 


?"$condition2" ) 
?command... 
?;; 


esac




對變數使用""並不是強制的,因為不會發生單詞分離.
每句測試行,都以右小括號)結尾.
每個條件塊都以兩個分號結尾;;.
case塊的結束以esac(case的反向拼寫)結尾.


例子:使用case
#!/bin/bash
# 測試字串範圍


echo; echo "Hit a key, then hit return."
read Keypress


case "$Keypress" in
  [[:lower:]]   ) echo "Lowercase letter";;
  [[:upper:]]   ) echo "Uppercase letter";;
  [0-9]         ) echo "Digit";;
  *             ) echo "Punctuation, whitespace, or other";;
esac      #  允許字串的範圍出現在[]中,
          #+ 或者POSIX風格的[[中.


#  在這個例子的第一個版本中,
#+ 測試大寫和小寫字串使用的是
#+ [a-z] 和 [A-Z].
#  這種用法將不會在某些特定的場合或Linux發行版中正常工作.


exit 0




相關文章