首頁 > 軟體

Linux Shell指令碼 - 選擇結構

2020-06-16 16:34:39

摘要:本文主要學習了Shell指令碼中的選擇結構。

if-else語句

基本語法

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

if 條件
then
    命令
fi

如果將if和then寫在一行,則需要在then前面新增“;”:

if 條件; then
    命令
fi

如果有兩個分支,就可以使用if-else語句,它的格式為:

if 條件
then
    命令1
else
    命令2
fi

Shell支援任意數目的分支,當分支比較多時,可以使用if-elif-else-結構,它的格式為:

if 條件1
then
    命令1
elif 條件2
then
    命令2
elif 條件3
then
    命令3
...
else
    命令n
fi

使用舉例

最簡單的使用案例,只有一個條件和一個命令:

#!/bin/bash
read a
read b
if (( $a == $b ))
then
    echo "a和b相等"
fi

根據條件執行不同的命令:

#!/bin/bash
read a
read b
if (( $a == $b ))
then
    echo "a和b相等"
else
    echo "a和b不相等"
fi

當有多個條件需要判斷時:

#!/bin/bash
read a
if (( $a > 90 ))
then
    echo "優秀"
elif (( $a > 80 ))
then
    echo "良好"
elif (( $a > 70 ))
then
    echo "中等"
elif (( $a > 60 ))
then
    echo "及格"
else
    echo "不及格"
fi

case-in語句

基本語法

表示式既可以是一個變數、一個數位、一個字串,也可以是一個數學計算表示式,或者是命令的執行結果,只要能夠得到確定的值就可以。

條件可以是一個數位、一個字串,甚至是一個簡單的正規表示式。

case會將表示式的值與多個條件逐個進行匹配:

1 如果表示式的值和某個條件匹配成功,就會執行這個條件後面對應的所有語句,直到遇見雙分號;;才停止;然後整個case語句就執行完了,程式會跳出case語句,執行esac後面的其它語句。
2 如果表示式的值沒有匹配到任何一個條件,那麼就執行*)後面的語句(符號“*”表示其它所有值),直到遇見雙分號;;或者esac才結束。

語法格式如下:

case 表示式 in
    條件1)
        命令1
        ;;
    條件2)
        命令2
        ;;
    條件3)
        命令3
        ;;
    ...
    *)
        命令n
esac

支援的正規表示式

case-in的條件部分支援簡單的正規表示式,具體來說,可以使用以下幾種格式:

1 *:表示任意字串。
2 [abc]:表示a、b、c三個字元中的任意一個。比如,[15ZH]表示1、5、Z、H四個字元中的任意一個。
3 [m-n]:表示從m到n的任意一個字元。比如,[0-9]表示任意一個數位,[0-9a-zA-Z]表示字母或數位。
4 |:表示多重選擇,類似邏輯運算中的或運算。比如,abc|xyz表示匹配字串“abc”或者“xyz”。

使用舉例

#!/bin/bash
read a
case $a in
    90)
        "優秀";;
    80)
        "良好";;
    70)
        "一般";;
    60)
        echo "及格";;
    *)
        echo "不及格"
esac


IT145.com E-mail:sddin#qq.com