佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > 詳解Shell if else語句的具體使用方法

詳解Shell if else語句的具體使用方法

熱門標(biāo)簽:服務(wù)外包 AI電銷 鐵路電話系統(tǒng) 百度競(jìng)價(jià)排名 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 呼叫中心市場(chǎng)需求 Linux服務(wù)器

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

如果你已經(jīng)熟悉了C語言、Java、JavaScript 等其它編程語言,那么你可能會(huì)覺得 Shell 中的 if else 語句有點(diǎn)奇怪。

if 語句

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

if condition
then
  statement(s)
fi

condition是判斷條件,如果 condition 成立(返回“真”),那么 then 后邊的語句將會(huì)被執(zhí)行;如果 condition 不成立(返回“假”),那么不會(huì)執(zhí)行任何語句。

從本質(zhì)上講,if 檢測(cè)的是命令的退出狀態(tài),我們將在下節(jié)《Shell退出狀態(tài)》中深入講解。

注意,最后必須以fi來閉合,fi 就是 if 倒過來拼寫。也正是有了 fi 來結(jié)尾,所以即使有多條語句也不需要用{ }包圍起來。

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

if condition; then
  statement(s)
fi

請(qǐng)注意 condition 后邊的分號(hào);,當(dāng) if 和 then 位于同一行的時(shí)候,這個(gè)分號(hào)是必須的,否則會(huì)有語法錯(cuò)誤。

實(shí)例1

下面的例子使用 if 語句來比較兩個(gè)數(shù)字的大?。?br />

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

運(yùn)行結(jié)果:
84↙
84↙
a和b相等

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

實(shí)例2

在判斷條件中也可以使用邏輯運(yùn)算符,例如:

#!/bin/bash
read age
read iq
if (( $age > 18  $iq  60 ))
then
  echo "你都成年了,智商怎么還不及格!"
  echo "來C語言中文網(wǎng)(http://c.biancheng.net/)學(xué)習(xí)編程吧,能迅速提高你的智商。"
fi

運(yùn)行結(jié)果:
20↙
56↙

就是邏輯“與”運(yùn)算符,只有當(dāng)兩側(cè)的判斷條件都為“真”時(shí),整個(gè)判斷條件才為“真”。

熟悉其他編程語言的讀者請(qǐng)注意,即使 then 后邊有多條語句,也不需要用{ }包圍起來,因?yàn)橛?fi 收尾呢。

if else 語句

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

if condition
then
  statement1
else
  statement2
fi

如果 condition 成立,那么 then 后邊的 statement1 語句將會(huì)被執(zhí)行;否則,執(zhí)行 else 后邊的 statement2 語句。

舉個(gè)例子:

#!/bin/bash
read a
read b
if (( $a == $b ))
then
  echo "a和b相等"
else
  echo "a和b不相等,輸入錯(cuò)誤"
fi

運(yùn)行結(jié)果:
10↙
20↙
a 和 b 不相等,輸入錯(cuò)誤

從運(yùn)行結(jié)果可以看出,a 和 b 不相等,判斷條件不成立,所以執(zhí)行了 else 后邊的語句。

if elif else 語句

Shell 支持任意數(shù)目的分支,當(dāng)分支比較多時(shí),可以使用 if elif else 結(jié)構(gòu),它的格式為:

if condition1
then
  statement1
elif condition2
then
  statement2
elif condition3
then
  statement3
……
else
  statementn
fi

注意,if 和 elif 后邊都得跟著 then。

整條語句的執(zhí)行邏輯為:

  • 如果 condition1 成立,那么就執(zhí)行 if 后邊的 statement1;如果 condition1 不成立,那么繼續(xù)執(zhí)行 elif,判斷 condition2。
  • 如果 condition2 成立,那么就執(zhí)行 statement2;如果 condition2 不成立,那么繼續(xù)執(zhí)行后邊的 elif,判斷 condition3。
  • 如果 condition3 成立,那么就執(zhí)行 statement3;如果 condition3 不成立,那么繼續(xù)執(zhí)行后邊的 elif。
  • 如果所有的 if 和 elif 判斷都不成立,就進(jìn)入最后的 else,執(zhí)行 statementn。

舉個(gè)例子,輸入年齡,輸出對(duì)應(yīng)的人生階段:

#!/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

運(yùn)行結(jié)果1:
19
成年

運(yùn)行結(jié)果2:
100
老年

再舉一個(gè)例子,輸入一個(gè)整數(shù),輸出該整數(shù)對(duì)應(yīng)的星期幾的英文表示:

#!/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

運(yùn)行結(jié)果1:
Input integer number: 4
Thursday

運(yùn)行結(jié)果2:
Input integer number: 9
error

到此這篇關(guān)于詳解Shell if else語句的具體使用方法的文章就介紹到這了,更多相關(guān)Shell if else語句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于shell的if和else詳解
  • Windows Powershell IF-ELSEIF-ELSE 語句
  • Shell腳本if else語句小結(jié)
  • linux shell中 if else以及大于、小于、等于邏輯表達(dá)式介紹

標(biāo)簽:蘭州 崇左 湘潭 銅川 仙桃 衡水 黃山 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Shell if else語句的具體使用方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    北安市| 固镇县| 陵川县| 漳浦县| 友谊县| 满洲里市| 颍上县| 西和县| 夏邑县| 邻水| 施秉县| 石柱| 阿拉善盟| 呼玛县| 上犹县| 永宁县| 邢台县| 黔东| 古交市| 娄底市| 凤凰县| 石河子市| 化隆| 醴陵市| 镇江市| 杨浦区| 杭州市| 武山县| 木兰县| 元朗区| 贞丰县| 额敏县| 灯塔市| 丽江市| 团风县| 旌德县| 北海市| 淮北市| 惠来县| 灌云县| 和平区|