C語言中文網 目錄
Shell腳本
1 Shell是什么
2 Shell是運維人員必須掌握的技能
3 常用的Shell有哪些
4 進入Shell的兩種方式
5 Shell命令的基本格式
6 Shell命令的本質到底是什么?如何自己實現一個命令?
7 Shell命令的選項和參數在本質上是什么
8 Shell命令提示符
9 修改命令提示符
10 第一個Shell腳本
11 執行Shell腳本
12 Shell四種運行方式(啟動方式)
13 Shell配置文件(配置腳本)的加載
14 如何編寫自己的Shell配置文件?
15 Shell變量
16 Shell變量的作用域
17 Shell命令替換
18 Shell位置參數
19 Shell特殊變量
20 Shell $*和$@的區別
21 Shell $?
22 Shell字符串詳解
23 Shell字符串拼接
24 Shell字符串截取
25 Shell數組
26 Shell獲取數組長度
27 Shell數組拼接
28 Shell刪除數組元素
29 Shell關聯數組
30 Shell內建命令
31 Shell alias命令
32 Shell echo命令
33 Shell read命令
34 Shell exit命令
35 Shell declare和typeset命令
36 Shell數學計算
37 Shell (())
38 Shell let命令
39 Shell $[]
40 Shell expr命令
41 Linux bc命令
42 Shell declare -i
43 Shell if else
44 Shell退出狀態
45 Shell test命令
46 Shell [[]]
47 Shell case in
48 Shell while
49 Shell until
50 Shell for
51 Shell select in
52 Shell break和continue
53 Shell函數
54 Shell函數參數
55 Shell函數返回值精講
56 Shell重定向
57 Linux中的文件描述符到底是什么?
58 結合文件描述符談重定向,徹底理解重定向的本質!
59 使用exec命令操作文件描述符
60 Shell代碼塊重定向
61 Shell Here Document
62 Shell Here String
63 Shell組命令
64 Shell進程替換
65 Linux管道
66 子Shell和子進程到底有什么區別?
67 如何檢測子Shell和子進程?
68 Shell過濾器
69 Linux中的信號
70 Bash Shell中的信號
71 Linux進程是什么
72 Shell模塊化(把代碼分散到多個腳本文件中)
首頁 > Shell腳本 閱讀:4,834

Shell if else語句(詳解版)

< 上一頁Shell declare -i Shell退出狀態下一頁 >

和其它編程語言類似,Shell 也支持選擇結構,并且有兩種形式,分別是 if else 語句和 case in 語句。本節我們先介紹 if else 語句,case in 語句將會在《Shell case in》中介紹。

如果你已經熟悉了C語言Java、JavaScript 等其它編程語言,那么你可能會覺得 Shell 中的 if else 語句有點奇怪。

if 語句

最簡單的用法就是只使用 if 語句,它的語法格式為:

if  condition
then
    statement(s)
fi

condition是判斷條件,如果 condition 成立(返回“真”),那么 then 后邊的語句將會被執行;如果 condition 不成立(返回“假”),那么不會執行任何語句。
從本質上講,if 檢測的是命令的退出狀態,我們將在下節《Shell退出狀態》中深入講解。
注意,最后必須以fi來閉合,fi 就是 if 倒過來拼寫。也正是有了 fi 來結尾,所以即使有多條語句也不需要用{ }包圍起來。

如果你喜歡,也可以將 then 和 if 寫在一行:

if  condition;  then
    statement(s)
fi

請注意 condition 后邊的分號;,當 if 和 then 位于同一行的時候,這個分號是必須的,否則會有語法錯誤。

實例1

下面的例子使用 if 語句來比較兩個數字的大小:
#!/bin/bash

read a
read b

if (( $a == $b ))
then
    echo "a和b相等"
fi
運行結果:
84↙
84↙
a和b相等

在《Shell (())》一節中我們講到,(())是一種數學計算命令,它除了可以進行最基本的加減乘除運算,還可以進行大于、小于、等于等關系運算,以及與、或、非邏輯運算。當 a 和 b 相等時,(( $a == $b ))判斷條件成立,進入 if,執行 then 后邊的 echo 語句。

實例2

在判斷條件中也可以使用邏輯運算符,例如:
#!/bin/bash

read age
read iq

if (( $age > 18 && $iq < 60 ))
then
    echo "你都成年了,智商怎么還不及格!"
    echo "來C語言中文網(http://www.frifeb11.com/)學習編程吧,能迅速提高你的智商。"
fi
運行結果:
20↙
56↙
你都成年了,智商怎么還不及格!
來C語言中文網(http://www.frifeb11.com/)學習編程吧,能迅速提高你的智商。

&&就是邏輯“與”運算符,只有當&&兩側的判斷條件都為“真”時,整個判斷條件才為“真”。

熟悉其他編程語言的讀者請注意,即使 then 后邊有多條語句,也不需要用{ }包圍起來,因為有 fi 收尾呢。

if else 語句

如果有兩個分支,就可以使用 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
運行結果:
10↙
20↙
a 和 b 不相等,輸入錯誤

從運行結果可以看出,a 和 b 不相等,判斷條件不成立,所以執行了 else 后邊的語句。

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
運行結果1:
19
成年

運行結果2:
100
老年

再舉一個例子,輸入一個整數,輸出該整數對應的星期幾的英文表示:
#!/bin/bash

printf "Input integer number: "
read num

if ((num==1)); then
    echo "Monday"
elif ((num==2)); then
    echo "Tuesday"
elif ((num==3)); then
    echo "Wednesday"
elif ((num==4)); then
    echo "Thursday"
elif ((num==5)); then
    echo "Friday"
elif ((num==6)); then
    echo "Saturday"
elif ((num==7)); then
    echo "Sunday"
else
    echo "error"
fi
運行結果1:
Input integer number: 4
Thursday

運行結果2:
Input integer number: 9
error
< 上一頁Shell declare -i Shell退出狀態下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo