Shell腳本語法-- if/then/elif/else/fi

Shell腳本語法-- if/then/elif/else/fi  數組

和C語言相似,在Shell中用if、then、elif、else、fi這幾條命令實現分支控制。這種流程控制語句本質上也是由若干條Shell命bash

 
令組成的,例如先前講過的
 
  
  
           
  
  
  1. if [ -f ~/.bashrc ]; then 
  2.     . ~/.bashrc 
  3. fi 
實際上是三條命令,if [ -f ~/.bashrc ]是第一條,then . ~/.bashrc是第二條,fi是第三條。若是兩條命令寫在同一行則須要用;
 
號隔開,一行只寫一條命令就不須要寫;號了,另外,then後面有換行,但這條命令沒寫完,Shell會自動續行,把下一行接在then
 
後面看成一條命令處理。和[命令同樣,要注意命令和各參數之間必須用空格隔開。if命令的參數組成一條子命令,若是該子命令
 
的Exit Status爲0(表示真),則執行then後面的子命令,若是Exit Status非0(表示假),則執行elif、else或者fi後面的子命
 
令。if後面的子命令一般是測試命令,但也能夠是其它命令。Shell腳本沒有{}括號,因此用fi表示if語句塊的結束。見下例:
 
  
  
           
  
  
  1. #! /bin/sh 
  2.  
  3. if [ -f /bin/bash ] 
  4. then echo "/bin/bash is a file" 
  5. else echo "/bin/bash is NOT a file" 
  6. fi 
 
 
  
  
           
  
  
  1. if :; then echo "always true"; fi 
:是一個特殊的命令,稱爲空命令,該命令不作任何事,但Exit Status老是真。此外,也能夠執行/bin/true或/bin/false獲得真
 
或假的Exit Status。再看一個例子:
 
  
  
           
  
  
  1. #! /bin/sh 
  2.  
  3. echo "Is it morning? Please answer yes or no." 
  4. read YES_OR_NO 
  5. if [ "$YES_OR_NO" = "yes" ]; then 
  6.   echo "Good morning!" 
  7. elif [ "$YES_OR_NO" = "no" ]; then 
  8.   echo "Good afternoon!" 
  9. else 
  10.   echo "Sorry, $YES_OR_NO not recognized. Enter yes or no." 
  11.   exit 1 
  12. fi 
  13. exit 0 
上例中的read命令的做用是等待用戶輸入一行字符串,將該字符串存到一個Shell變量中。
此外,Shell還提供了&&和||語法,和C語言相似,具備Short-circuit特性,不少Shell腳本喜歡寫成這樣:
test "$(whoami)" != 'root' && (echo you are using a non-privileged account; exit 1)
&&至關於「if...then...」,而||至關於「if not...then...」。&&和||用於鏈接兩個命令,而上面講的-a和-o僅用於在測試表達
 
式中鏈接兩個測試條件,要注意它們的區別,例如,
test "$VAR" -gt 1 -a "$VAR" -lt 3
和如下寫法是等價的
test "$VAR" -gt 1 && test "$VAR" -lt 3
 
 
  
  
           
  
  
  1. #!/bin/bash 
  2. echo "Enter your name: "  
  3. read A 
  4. if [ "$A" = "GS" ];then 
  5.         echo "yes" 
  6. elif [ "$A" = "UC" ];then 
  7.         echo "no" 
  8. else 
  9.         echo  "your are wrong" 
  10. fi 
(注意:if、elif後要有空格,[]先後有空格,=先後有空格)
 
  
  
           
  
  
  1. #!/bin/bash 
  2. read -p  "Enter your name: " A 
  3. if [ "$A" = "GS" ];then 
  4.         echo "yes" 
  5. elif [ "$A" = "UC" ];then 
  6.         echo "no" 
  7. else 
  8.         echo  "your are wrong" 
  9. fi 
相關文章
相關標籤/搜索