Shell學習筆記(二)
if 語句
最簡單的用法就是只使用 if 語句,它的語法格式為:
if condition then statement(s) fi
condition
是判斷條件,如果 condition 成立(返回“真”),那麽 then 後邊的語句將會被執行;如果 condition 不成立(返回“假”),那麽不會執行任何語句。
從本質上講,if 檢測的是命令的退出狀態
註意,最後必須以fi
來閉合,fi 就是 if 倒過來拼寫。也正是有了 fi 來結尾,所以即使有多條語句也不需要用{ }
包圍起來。
也可以將 then 和 if 寫在一行:
if condition; then statement(s) fi
請註意 condition 後邊的分號;
,當 if 和 then 位於同一行的時候,這個分號是必須的,否則會有語法錯誤。
實例1
下面的例子使用 if 語句來比較兩個數字的大小:
#!/bin/bash echo "Hello world" read a read b if (( $a == $b )) then echo "a和b相等" fi
執行結果
[root@sijizhen demo]# ./backup.sh
Hello world
55
55
a和b相等
if(())
是一種數學計算命令,它除了可以進行最基本的加減乘除運算,還可以進行大於、小於、等於等關系運算,以及與、或、非邏輯運算。當 a 和 b 相等時,(( $a == $b ))
判斷條件成立,進入 if,執行 then 後邊的 echo 語句。
if else 語句
if condition then statement1 else statement2 fi
如果 condition 成立,那麽 then 後邊的 statement1 語句將會被執行;否則,執行 else 後邊的 statement2 語句。
舉個例子
#!/bin/bash read a read bif (( $a == $b )) then echo "a和b相等" else echo "a和b不相等,輸入錯誤" fi
執行結果:
[root@sijizhen demo]# ./backup.sh Hello world 66 65 a和b不相等,輸入錯誤
if elif else 語句
Shell 支持任意數目的分支,當分支比較多時,可以使用 if elif else 結構,它的格式為:
if condition1 then statement1 elif condition2 then statement2 elif condition3 then statement3 …… else statementn fi
註意,if 和 elif 後邊都得跟著 then。
整條語句的執行邏輯為:
- 如果 condition1 成立,那麽就執行 if 後邊的 statement1;如果 condition1 不成立,那麽繼續執行 elif,判斷 condition2。
- 如果 condition2 成立,那麽就執行 statement2;如果 condition2 不成立,那麽繼續執行後邊的 elif,判斷 condition3。
- 如果 condition3 成立,那麽就執行 statement3;如果 condition3 不成立,那麽繼續執行後邊的 elif。
- 如果所有的 if 和 elif 判斷都不成立,就進入最後的 else,執行 statementn。
舉個例子,輸入年齡,輸出對應的人生階段:
#!/bin/bash read age if (( $age <= 2 )); then echo "嬰兒" elif (( $age >= 3 && $age <= 8 )); then echo "幼兒" elif (( $age >= 9 && $age <= 17 )); then echo "少年" elif (( $age >= 18 && $age <=25 )); then echo "成年" elif (( $age >= 26 && $age <= 40 )); then echo "青年" elif (( $age >= 41 && $age <= 60 )); then echo "中年" else echo "老年" fi
Shell while循環詳解
while 循環是 Shell 腳本中最簡單的一種循環,當條件滿足時,while 重復地執行一組語句,當條件不滿足時,就退出 while 循環。
Shell while 循環的用法如下:
while condition do statements done
condition
表示判斷條件,statements
表示要執行的語句(可以只有一條,也可以有多條),do
和done
都是 Shell 中的關鍵字。
while 循環的執行流程為:
- 先對 condition 進行判斷,如果該條件成立,就進入循環,執行 while 循環體中的語句,也就是 do 和 done 之間的語句。這樣就完成了一次循環。
- 每一次執行到 done 的時候都會重新判斷 condition 是否成立,如果成立,就進入下一次循環,繼續執行 do 和 done 之間的語句,如果不成立,就結束整個 while 循環,執行 done 後面的其它 Shell 代碼。
- 如果一開始 condition 就不成立,那麽程序就不會進入循環體,do 和 done 之間的語句就沒有執行的機會。
註意,在 while 循環體中必須有相應的語句使得 condition 越來越趨近於“不成立”,只有這樣才能最終退出循環,否則 while 就成了死循環,會一直執行下去,永無休止。
Shell學習筆記(二)