您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Shell if else語句的用法是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)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 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ù)字的大小:
#!/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 收尾呢。
如果有兩個(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 后邊的語句。
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
“Shell if else語句的用法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。