1、if 語(yǔ)句
最簡(jiǎn)單的用法就是只使用 if 語(yǔ)句,它的語(yǔ)法格式為:
if condition
then
statement(s)
fi
condition是判斷條件,如果 condition 成立(返回“真”),那么 then 后邊的語(yǔ)句將會(huì)被執(zhí)行洪唐;如果 condition 不成立(返回“假”)钻蹬,那么不會(huì)執(zhí)行任何語(yǔ)句。
注意凭需,最后必須以fi來(lái)閉合问欠,fi 就是 if 倒過(guò)來(lái)拼寫。也正是有了 fi 來(lái)結(jié)尾粒蜈,所以即使有多條語(yǔ)句也不需要用{ }包圍起來(lái)顺献。
如果你喜歡,也可以將 then 和 if 寫在一行:
if condition; then
statement(s)
fi
請(qǐng)注意 condition 后邊的分號(hào);枯怖,當(dāng) if 和 then 位于同一行的時(shí)候注整,這個(gè)分號(hào)是必須的,否則會(huì)有語(yǔ)法錯(cuò)誤。
例如肿轨,使用 if 語(yǔ)句來(lái)比較兩個(gè)數(shù)字的大惺倜帷:
#!/bin/bash
read a
read b
if (( $a == $b ))
then
echo "a和b相等"
fi
運(yùn)行結(jié)果:
84↙
84↙
a和b相等
2、if else 語(yǔ)句
如果有兩個(gè)分支椒袍,就可以使用 if else 語(yǔ)句驼唱,它的格式為:
if condition
then
statement1
else
statement2
fi
如果 condition 成立,那么 then 后邊的 statement1 語(yǔ)句將會(huì)被執(zhí)行驹暑;否則玫恳,執(zhí)行 else 后邊的 statement2 語(yǔ)句。
例如:
#!/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 后邊的語(yǔ)句。
3视搏、if elif else 語(yǔ)句
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。
整條語(yǔ)句的執(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最易。
例如怒坯,,輸入年齡耘纱,輸出對(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
老年