1. 程式人生 > >Shell學習筆記(二)

Shell學習筆記(二)

rdquo targe 都是 ash cheng 否則 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 b
if (( $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表示要執行的語句(可以只有一條,也可以有多條),dodone都是 Shell 中的關鍵字。

while 循環的執行流程為:

  • 先對 condition 進行判斷,如果該條件成立,就進入循環,執行 while 循環體中的語句,也就是 do 和 done 之間的語句。這樣就完成了一次循環。
  • 每一次執行到 done 的時候都會重新判斷 condition 是否成立,如果成立,就進入下一次循環,繼續執行 do 和 done 之間的語句,如果不成立,就結束整個 while 循環,執行 done 後面的其它 Shell 代碼。
  • 如果一開始 condition 就不成立,那麽程序就不會進入循環體,do 和 done 之間的語句就沒有執行的機會。

註意,在 while 循環體中必須有相應的語句使得 condition 越來越趨近於“不成立”,只有這樣才能最終退出循環,否則 while 就成了死循環,會一直執行下去,永無休止

Shell學習筆記(二)