自學Linux Shell12.1-結構化命令if-then

點擊返回 自學Linux命令行與Shell腳本之路html

12.1-結構化命令if-then

許多程序要求對shell腳本中的命令施加一些邏輯流程控制。有一類命令會根據條件使腳本跳過某些命令。這樣的命令一般稱爲結構化命令(structured command)。shell

1. 基本的結構化if-then語句

結構化命令容許你改變程序執行的順序。在bash shell中有很多結構化命令,基本的結構化命令就是if-then語句,if-then語句能夠有兩種格式bash

第一種:spa

1 if    command
2 then
3       commands
4 fi

第二種:命令行

1 if  command;then
2    commands
3 fi
  • bash shell的if語句會運行if後面的那個命令。
  • 若是該命令的退出狀態碼是0 (該命令成功運行),位於then部分的命令就會被執行。
    若是該命令的退出狀態碼是其餘值,then部分的命令就不會被執行,bash shell會繼續執行腳本中的下一個命令。
  • then的部分能夠不止一條命令,會將這些命令當成一個塊
    若是該命令的退出狀態碼是0 (該命令成功運行),位於then部分的全部命令就會被執行。
    若是該命令的退出狀態碼是其餘值,then部分的全部命令就不會被執行,bash shell會繼續執行腳本中的下一個命令。
  • fi語句用來表示if-then 語句到此結束。

舉例1code

舉例2
htm

舉例3blog

 舉例4
get

if語句行使用grep命令在/etc/passwd文件中查找某個用戶名當前是否在系統上使用。若是有用戶使用了那個登陸名,腳本會顯示一些文本信息並列出該用戶HOME目錄的bash文件。class

可是,若是將testuser變量設置成一個系統上不存在的用戶,則什麼都不會顯示。

2. if-then-else語句

1 if  command
2 then
3     command
4 else
5     command
6 fi
  • 當if語句中的命令返回零退出狀態碼時,會執行then部分中的命令
  • 當if語句中的命令返回非零退出狀態碼時,會執行else部分中的命令
  • else部分能夠包含多條命令

舉例1

 

舉例2

3. 嵌套 if

  • bash shell會依次執行if語句,只有第一個返回退出狀態碼0的語句中的then部分會被執行
  • elif語句中,緊跟其後的else語句屬於elif代碼塊的
 
 1 if  command
 2 then
 3     command
 4 elif command
 5 then
 6     command
 7 elif command
 8 then 
 9     command
10 else
11     command     
12 fi
相關文章
相關標籤/搜索