shell腳本編程——進階篇(真刀實幹)

條件測試

  • 文件測試
  • 整數測試
  • 字符串與邏輯測試

if語句

  • if單分支語句
  • if雙分支語句
  • if多分支語句
  • if嵌套語句

test命令
測試特定的表達式 是否成立,當條件成立時,測試語句的返回值爲0,否則爲其他數值。

格式1:test 條件表達式
格式2:[   條件表達式   ]   (注意前後至少有1個空格,否則不予執行)

文件測試
格式:[ 操作符 文件或目錄 ]
常用的測試操作符:
1、-d:測試是否爲目錄(Directory)
2、-e:測試目錄或文件是否存在(Exist)
3、-f:測試是否爲文件(File)
4、-r:測試當前用戶是否有權限讀取(Read)
5、-w:測試當前用戶是否有權限寫入(Write)
6、-x:測試當前用戶是否有權限執行(eXcute)
舉例說明

方法一:test -d /etc/sysconfig(測試etc目錄下是否有sysconfig這個文件或者目錄存在)
echo $?(進行條件判斷,如果由此文件輸出結果爲0值)
方法二:[ -d /etc/sysconfig ]
echo $?(進行條件判斷,如果無此文件輸出結果爲非0值,就是1)

整數值比較
格式:[ 整數1 操作符 整數2 ]
常用的測試操作符

  • -eq:等於(Equal)
  • -ne:不等於(Not Equal)
  • -gt:大於(Greater Than)
  • -lt:小於(Lesser Than)
  • -le:小於或等於(Lesser or Equal)
  • -ge:大於或等於(Greater or Equal)

牛刀小試
目的:查看目錄下是否有我們需要的文件,若沒有則直接創建。

[root@localhost ~]# test ! -e /etc/ssc && touch /etc/ssc
(查看etc目錄下是否有ssc文件,如果沒有直接在目錄下創建)
[root@localhost ~]# cd /etc
(驗證:進入etc目錄下)
[root@localhost etc]# ls
(查看詳細信息,此時可以找到我們創建的sscw文件)

字符串比較

格式1:[ 字符串1 = 字符串2 ]
​ [ 字符串1 ! = 字符串2 ]
格式2:[ -z 字符串]
常用的測試操作符
1、=:字符串內容相同
2、!=:字符串內容不同,!表示相反的意思
3、-z:字符串內容爲空

邏輯測試

格式1:[ 表達式1 ] 操作符 [ 表達式2 ] ...
格式2:命令1 操作符 命令2 ...
常用的測試操作符
1、-a或&&:邏輯與,“而且”的意思
2、-o或||:邏輯或,“或者”的意思
3、!:邏輯否

單分支結構
shell腳本編程——進階篇(真刀實幹)
雙分支結構
shell腳本編程——進階篇(真刀實幹)
多分支結構
shell腳本編程——進階篇(真刀實幹)

IF語句示例

1.單分支if語句
(判斷成績,若<=50,則輸出結果“數字太小”)
shell腳本編程——進階篇(真刀實幹)
2.雙分支if語句
(判斷成績,若小於等於50,則輸出結果“數字太小;若大於等於50,則輸出結果“數字太大”)
shell腳本編程——進階篇(真刀實幹)
3、多分支語句
(判斷分數高低,並分爲優秀、及格與不及格三個層次)
shell腳本編程——進階篇(真刀實幹)

牛刀小試

自擬題目:

(1)田徑比賽成績在10秒內的選手才能進入決賽,輸入性別後,分別提示進入男子組還是女子組。使用多重判斷,嵌套if實現。

shell腳本編程——進階篇(真刀實幹)

(2)編寫腳本sumsquare.sh,用來計算兩個整數的平方和並輸出結果。

第一種方法(引用位置變量)
shell腳本編程——進階篇(真刀實幹)
shell腳本編程——進階篇(真刀實幹)
第二種方法(識別鍵盤輸入數據,實現交互過程)
shell腳本編程——進階篇(真刀實幹)
shell腳本編程——進階篇(真刀實幹)
可見,準確的實現一個功能,有着多種不同的編寫代碼方式。我們需發散思維,爭取在準確實現功能的同時能想出多種不同的編程方式,防止思維出現侷限性。

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