shell編程之if條件語句

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章