if條件語法規則
單分支if語句
if 表達式;then
語句1
else
語句2
fi
多分支if語句
if 表達式1;then
語句1
elif 表達式2;then
語句2
…
else
語句n
fi
實例
#!/bin/bash
NUM=200
if(($NUM > 4));then
echo "num is greater than 4!"
else
echo "num is less than 4!"
fi
注意:
1)在比較數字大小時,表達式應該用兩個小括號括起來;
2)if表達式後需要一個分號,然後再加上then;
3)各條處理語句需縮進;
4)條件語句結尾需使用fi;
shell邏輯運算符
-eq: 等於 應用於整型比較
-ne: 不等於
-lt: 小於 應用於整型比較,字符串比較使用’>‘或’<’
-gt: 大於
-le: 小於等於
-ge: 大於等於
-a: 與運算
-o: 或運算, 非運算直接在判斷語句前加!
shell內置判斷符號
-z: 空字符串
-e: 判斷文件是否存在,若存在,結果爲真
-d: 判斷目錄是否存在,若存在,結果爲真
-f :判斷文件是否爲一個普通文件,若是,結果爲真
-s: 判斷文件長度是否爲0,若文件長度不爲0,結果爲真
-r:判斷文件是否可讀,若文件可讀,結果爲真
-w:判斷文件是否可寫,若可寫,結果爲真
-x:判斷文件是否可執行,若可,結果爲真
實例
判斷目錄是否存在,不存在則創建
#!/bin/bash
DIR=/temp/shell
if [ ! -d $DIR ];then
mkdir -p $DIR
else
echo "this dir is exist,please exit..."
fi
判斷文件是否存在
#!/bin/bash
FILE=test.txt
if [ ! -f $FILE ];then
echo "OK" >> $FILE
else
echo -e "\033[32m----------------\033[0m"
cat $FILE
fi
多個條件判斷
#!/bin/bash
scores=80
if [[ $scores -gt 90 ]]; then
echo "very good!"
elif [[ $scores -gt 70 ]]; then
echo "good!"
elif [[ $scores -gt 60 ]]; then
echo "pass!"
else
echo "no pass!"
fi
注意:
1)表達式與中括號之間一定要有空格區分;
2)if表達式可以是[],[[]]或(())等條件表達式,[]一般用於判斷文件或路徑,[[]],(())一般用於數值的判斷;使用’[]'時注意在變量的外側加上雙引號"$scores"
關於[]與[[]]之間的區別可以看看這篇文章,[]與[[]]之間的區別,講的通俗易懂。
3)只有else這一判斷語句不需要then,其餘分支都需要then語句;
以輸入參數的方式來實現
先判斷參數是否輸入,若輸入了,則繼續後面的判斷,否則提示未輸入
#!/bin/bash
scores=$1
if [ -z $scores ]; then
echo "score is empty!"
echo "Usage: {$0 60|80.}"
exit
fi
if [[ $scores -gt 90 ]]; then
echo "very good!"
elif [[ $scores -ge 70 ]]; then
echo "good!"
elif [[ $scores -ge 60 ]]; then
echo "pass!"
else
echo "no pass!"
fi
腳本執行命令
/bin/bash scores.sh 85