自學Linux Shell12.1-結構化命令if-then
阿新 • • 發佈:2018-06-21
之路 get 嵌套 structure 就會 退出 alt linu 退出狀態
點擊返回 自學Linux命令行與Shell腳本之路
12.1-結構化命令if-then
許多程序要求對shell腳本中的命令施加一些邏輯流程控制。有一類命令會根據條件使腳本跳過某些命令。這樣的命令通常稱為結構化命令(structured command)。
1. 基本的結構化if-then語句
結構化命令允許你改變程序執行的順序。在bash shell中有不少結構化命令,基本的結構化命令就是if-then語句,if-then語句可以有兩種格式
第一種:
1 if command 2 then 3 commands 4 fi
第二種:
1 if command;then2 commands 3 fi
- bash shell的if語句會運行if後面的那個命令。
- 如果該命令的退出狀態碼是0 (該命令成功運行),位於then部分的命令就會被執行。
如果該命令的退出狀態碼是其他值,then部分的命令就不會被執行,bash shell會繼續執行腳本中的下一個命令。 - then的部分可以不止一條命令,會將這些命令當成一個塊
如果該命令的退出狀態碼是0 (該命令成功運行),位於then部分的所有命令就會被執行。
如果該命令的退出狀態碼是其他值,then部分的所有命令就不會被執行,bash shell會繼續執行腳本中的下一個命令。 - fi語句用來表示if-then 語句到此結束。
舉例1
舉例2
舉例3
舉例4
if語句行使用grep命令在/etc/passwd文件中查找某個用戶名當前是否在系統上使用。如果有用戶使用了那個登錄名,腳本會顯示一些文本信息並列出該用戶HOME目錄的bash文件。
但是,如果將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
自學Linux Shell12.1-結構化命令if-then