Shell腳本(2)-if語句
阿新 • • 發佈:2018-03-17
if語句if語句
1、什麽是條件測試操作?
要使Shell腳本具有一定的“智能化”,面臨的問題就是區分不同情況下以確定執行何種操作。Shell環境中根據命令執行後的返回狀態值($?)來判斷是否執行成功,當返回值為0時,表示執行成功,否則表示失敗或異常。通過條件測試操作的工具-test命令,可以對特定條件進行測試。
2、條件測試分類
1)文件測試:根據給定的路徑,判斷是否為文件或目錄。
常見選項:
■ -d:測試是否為目錄
■ -f:測試是否為文件
■ -e:測試文件或目錄是否存在
■ -r:測試當前用戶是否有讀取權限
■ -w:測試當前用戶是否有寫入權限
■ -x:測試當前用戶是否有執行權限
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/b8e9b8fd12c641394aa1fbfe2e3b37f7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)整數值比較:整數值比較就是根據兩個給定的整數值,判斷第一個數與第二個數的大小關系
常見選項:
■ -eq:等於
■ -lt:小於
■ -gt:大於
■ -ne:不等於
■ -ge:大於等於
■ -le:小於等於
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/85e7742867688749208596fa39763aee.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)字符串比較:字符創比較通常用於檢查用戶輸入、系統環境是否滿足條件等。在通過交互式操作的Shell環境中,也可以用來判斷用戶輸入的位置參數是否符合要求
常用操作:
■ =:第一個字符與第二個相同
■ !=:第一個與第二個字符不相同
■ -z:檢查字符創是否為空
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/ab6037b7bb35a015ed9d7bdb72d0dfa5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4)邏輯測試:判斷兩個條件或多個條件之間的依賴關系
■ &&:表示“而且”,只有前後兩個條件都成立時,返回值為0
■ ||:表示“或者”,只要兩個條件中有一個成立,返回值即為0
■ !:表示“否”
3、if語句
1)單分支if語句
if 條件測試操作
then
命令序列
fi
2)雙分支if語句
if 條件測試操作
then
命令序列1
else
命令序列2
fi
3)多分支if語句
if 條件測試操作
then
命令序列1
elif 條件測試操作2
then
命令序列2
。。。
else
命令序列
fi
4、應用舉例
1)新建一個腳本,用於測試成績
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/3ddd13333676264af3c0a7ba5dc22635.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/57575c2510eace79004d94ac5cd5f5c2.png?x-oss-process=image/watermark,size16,textQDUxQ1RP5Y2a5a6i,colorFFFFFF,t100,gse,x10,y10,shadow90,typeZmFuZ3poZW5naGVpdGk=)
2)腳本
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/199fcc810689ed826814c9236e4b69e1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)測試腳本
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/dfd80d26cb94a2a058841b63c7bfabd2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4)腳本解釋
第一個條件測試操作:當輸入的成績大於等於90、小於等於100時,輸出“成績優秀”;read -p用於給“GRADE”變量賦值。
1、什麽是條件測試操作?
要使Shell腳本具有一定的“智能化”,面臨的問題就是區分不同情況下以確定執行何種操作。Shell環境中根據命令執行後的返回狀態值($?)來判斷是否執行成功,當返回值為0時,表示執行成功,否則表示失敗或異常。通過條件測試操作的工具-test命令,可以對特定條件進行測試。
2、條件測試分類
1)文件測試:根據給定的路徑,判斷是否為文件或目錄。
常見選項:
■ -d:測試是否為目錄
■ -f:測試是否為文件
■ -e:測試文件或目錄是否存在
■ -r:測試當前用戶是否有讀取權限
■ -w:測試當前用戶是否有寫入權限
■ -x:測試當前用戶是否有執行權限
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/b8e9b8fd12c641394aa1fbfe2e3b37f7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)整數值比較:整數值比較就是根據兩個給定的整數值,判斷第一個數與第二個數的大小關系
常見選項:
■ -eq:等於
■ -lt:小於
■ -gt:大於
■ -ne:不等於
■ -ge:大於等於
■ -le:小於等於
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/85e7742867688749208596fa39763aee.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)字符串比較:字符創比較通常用於檢查用戶輸入、系統環境是否滿足條件等。在通過交互式操作的Shell環境中,也可以用來判斷用戶輸入的位置參數是否符合要求
常用操作:
■ =:第一個字符與第二個相同
■ !=:第一個與第二個字符不相同
■ -z:檢查字符創是否為空
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/ab6037b7bb35a015ed9d7bdb72d0dfa5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4)邏輯測試:判斷兩個條件或多個條件之間的依賴關系
■ &&:表示“而且”,只有前後兩個條件都成立時,返回值為0
■ !:表示“否”
3、if語句
1)單分支if語句
if 條件測試操作
then
命令序列
fi
2)雙分支if語句
if 條件測試操作
then
命令序列1
else
命令序列2
fi
3)多分支if語句
if 條件測試操作
then
命令序列1
elif 條件測試操作2
then
命令序列2
。。。
else
命令序列
fi
4、應用舉例
1)新建一個腳本,用於測試成績
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/3ddd13333676264af3c0a7ba5dc22635.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/57575c2510eace79004d94ac5cd5f5c2.png?x-oss-process=image/watermark,size16,textQDUxQ1RP5Y2a5a6i,colorFFFFFF,t100,gse,x10,y10,shadow90,typeZmFuZ3poZW5naGVpdGk=)
2)腳本
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/199fcc810689ed826814c9236e4b69e1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)測試腳本
![技術分享圖片](http://i2.51cto.com/images/blog/201803/17/dfd80d26cb94a2a058841b63c7bfabd2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4)腳本解釋
第一個條件測試操作:當輸入的成績大於等於90、小於等於100時,輸出“成績優秀”;read -p用於給“GRADE”變量賦值。
Shell腳本(2)-if語句