? ? 在任何一門語(yǔ)言中榛斯,判斷語(yǔ)句總是少不了偎肃,今天來(lái)學(xué)習(xí)一下Shell中的if語(yǔ)句腿倚。
基本語(yǔ)法
單分支情況
- 第一種語(yǔ)法
if <條件表達(dá)式>
then
語(yǔ)句
fi
- 第二種語(yǔ)法
if <條件表達(dá)式>;then
語(yǔ)句
fi
其中條件表達(dá)式部分可以是test、[]昼窗、[[]]和(())等條件表達(dá)式是趴。以上兩種格式,可根據(jù)自己實(shí)際情況選擇一種即可澄惊。
雙分支情況
if <條件表達(dá)式>
then
語(yǔ)句
else
語(yǔ)句
fi
多分支情況
if <條件表達(dá)式>
then
語(yǔ)句
elif <條件表達(dá)式>
then
語(yǔ)句
elif <條件表達(dá)式>
then
語(yǔ)句
else
語(yǔ)句
fi
在多分支的if中唆途,每個(gè)elif中后均需要帶有then
分支嵌套情況
if <條件表達(dá)式>
then
if <條件表達(dá)式>
then
語(yǔ)句
fi
fi
在以上的寫法注意縮進(jìn)富雅,方便閱讀
建議在一個(gè)if嵌套不要超過(guò)三層
if與條件表達(dá)式語(yǔ)法
? ? 在前面講過(guò)各個(gè)條件測(cè)試表達(dá)式,如test肛搬、[]吹榴、[[]]和(())等條件表達(dá)式,如下所示:
- 1滚婉、test表達(dá)式
if test <表達(dá)式>
then
語(yǔ)句
fi
- 2图筹、[]表達(dá)式
if [ <表達(dá)式> ]
then
語(yǔ)句
fi
- 3、[ [ ] ]表達(dá)式
if [[ <表達(dá)式> ]]
then
語(yǔ)句
fi
- 4让腹、(( ))表達(dá)式
if (( <表達(dá)式> ))
then
語(yǔ)句
fi
- 5远剩、命令表達(dá)式
if 命令
then
語(yǔ)句
fi
if示例
1、if示例:判斷文件是否且為普通文件
[root@localhost ~]# [ -f /etc/passwd ] && echo true || echo false
true
[root@localhost ~]# test -f /etc/passwd && echo true || echo false
true
與以下寫法等效
[root@localhost Test]# cat if.sh
#!/bin/bash
if [ -f "$1" ]
then
echo true
else
echo false
fi
if test -f "$2"
then
echo true
else
echo false
fi
[root@localhost Test]# bash if.sh /etc/passwd /etc/hostssss
true
false
2骇窍、if示例:比較輸入數(shù)字的大小
[root@localhost Test]# cat compareNum.sh
#!/bin/bash
a=$1
b=$2
echo "Inputed number is:" ${a} $瓜晤
if [ $# -ne 2 ]
then
echo "input number must be 2 number."
exit 2
fi
expr $a + 2 &> /dev/null # 檢查是否為整數(shù)
resulta=$?
expr $b + 2 &> /dev/null # 檢查是否為整數(shù)
resultb=$?
if [ $resulta -eq 0 -a $resultb -eq 0 ] # 判斷檢查結(jié)果
then
if [ $a -gt $b ]
then
echo "$a > $b"
elif [ $a -lt $b ]
then
echo "$a < $b"
elif [ $a -eq $b ]
then
echo "$a = $b"
else
echo "error"
fi
else
echo "please check your input"
fi
[root@localhost Test]# bash compareNum.sh 1 # 輸入一個(gè)數(shù)字
Inputed number is: 1
input number must be 2 number.
[root@localhost Test]# bash compareNum.sh a b # 輸入字母
Inputed number is: a b
please check your input
[root@localhost Test]# bash compareNum.sh 900 89 # 輸入兩個(gè)數(shù)字
Inputed number is: 900 89
900 > 89
[root@localhost Test]# bash compareNum.sh 89 900
Inputed number is: 89 900
89 < 900
[root@localhost Test]# bash compareNum.sh 900 900
Inputed number is: 900 900
900 = 900