91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell條件測試語句及三種if語句

發布時間:2020-08-10 14:24:15 來源:網絡 閱讀:6933 作者:王高利 欄目:軟件技術

7 - Shell_條件操作測試及if語句

要使Shell腳本程序具備一定的“智能”,面臨的第一個問題就是如何區分不同的情況以確定執行何種操作。例如,當磁盤使用率超過95%發送警告;當備份目錄不存在時能夠自動創建;當源碼編譯程序的配置失敗則不再繼續安裝等。

Shell環境根據命令執行后的返回狀態值($?)來判斷是否執行成功,當返回值為0,表示成功,值為其他時,表示失敗。

使用專門的測試工具—test命令,可以對特定條件進行測試,并根據返回值來判斷條件是否成立(返回值0為成立)

使用test命令的兩種形式

A:test 條件表達式

B:[ 條件表達式 ]

以上兩種方法的作用完全一樣,后者為常用。但后者需要注意方括號“[”、“]”與條件表達式之間至少有一個空格。

1. 文件測試

文件測試指的是根據給的路徑,判斷對應的是文件還是目標,或者判斷文件是否有可讀可寫、可執行等權限。常見操作如下:

Shell條件測試語句及三種if語句

執行條件測試操作以后,通過預定義變量“$?”可以獲得測試命令的返回狀態,從而判斷該條件是否成立。

例如:一下操作判斷/media/cdrom/目錄是否存在,返回值為1成立。

Shell條件測試語句及三種if語句

若測試條件不存在,則測試返回值將不為0(通常為1),如圖所示:

Shell條件測試語句及三種if語句

2. 整數值比較

主要根據給定的兩個值,判斷第一個與第二個數的關系,如是否大于、小于、等于第二個數。常見選項如下:

Shell條件測試語句及三種if語句

整數值比較在Shell腳本應用中比較多。例如:判斷已登錄用戶數量、開啟進程數、磁盤使用率是否超標,以及軟件版本是否符合要求。實際使用時,往往會通過變量引用,命令替換等方式來獲取一個值。

例如:若要判斷當前已登錄的用戶數,當超過五個時輸出“Too may”,可以執行以下語句。其中,已登錄用戶數可以通過“who | wc -l”查詢,以命令替換方式進行。

Shell條件測試語句及三種if語句

0

再例如:若要判斷當前可用內存(buffers/cache)大小,當低于2048MB時輸出具體值,可以執行以下操作。其中“free -m”命令以MB單位輸出內存信息。

Shell條件測試語句及三種if語句

3. 字符串比較

通常用來檢查用戶輸入、系統環境等是否滿足條件,在提供交互式操作的Shell腳本中,也可用來判斷用戶輸入的位置是否符合要求,常見選項如下:

Shell條件測試語句及三種if語句

例如:判斷當前系統的語言環境,當發現不是“en.US”時輸出提示信息“Not en.US”:

Shell條件測試語句及三種if語句

再例如:在Shell腳本中,經常需要用戶輸入“yes”或“no”來確認某個任務,一下操作展示了確認交互的過程,當然,實際使用時還會根據變量“ACK”的取值分別執行進一步的操作。

Shell條件測試語句及三種if語句

4. 邏輯測試

是判斷兩個或多個條件之間的依賴關系,當系統任務取決于多個不同的條件時,根據這些條件是否同時成立或只要有其中一個成立等情況,需要有一個測試的過程。常用選項如下:

&&:邏輯與,表示“而且”,只有前后兩個條件都成立時,整個測試命令的返回值才為0。使用test命令時,“&&”可改為“-a”

||:邏輯或,表示“或者”,只有前后兩個條件中一個成立,整個測試命令的返回值才為0。使用test命令時,“||”可改為“-o”

!:邏輯否,表示“不”,只有當指定的條件不成立時,整個測試命令的返回值才為0。

“&&”、“||”通常也用于間隔不同的命令操作,其作用是相似得。

例如:若要判斷當前Linux系統的內核版本是否大于2.4,可以執行以下操作。

Shell條件測試語句及三種if語句

使用if條件語句

在Shell腳本中,if語句是最為常用的一種流程控制方式,用來根據特定的條件測試結果,分別執行不同的操作(如果……那么……)

1. 單分之的if語句

if語句的“分支”指的是不同測試結果所對應的執行語句(一條或多條)。對于單分支選擇結構,只有在“條件測試成立”時才會執行相應的“命令序列”,否則不執行任何操作,單分支結構如下:

Shell條件測試語句及三種if語句

在上述語句結構中,條件測試操作即“[ 條件表達式 ]”語句,也可以是其他可執行的命令句;命令序列指的是一條或多條可執行的命令行,也包括嵌套使用的if語句或其他流程控制語句。

單分支的執行流程:首先判斷條件測試語句的結果,返回值為0,表示條件成立,則執行then后面的命令序列,一直遇見fi結束判斷為止,繼續執行其他腳本代碼;返回值為其他,則忽略then后面的命令序列,直接跳至fi以后執行其他腳本代碼。

案例:

Shell條件測試語句及三種if語句

2. 雙分支的if語句

對于雙分支結構,要求針對“條件成立”、“條件不成立”兩種情況分別執行不同命令序列。

Shell條件測試語句及三種if語句

雙分支if語句的執行流程:首先判斷條件測試操作的結果,如果成立,則執行then后的命令序列1,忽略else后的命令序列2,直到遇見fi結束判斷;若不成立,則忽略then及后面的命令序列1,直接跳至else后面的命令序列2,直到遇見fi結束判斷。

案例:

Shell條件測試語句及三種if語句

3. 多分支的if語句

由于if語句可以根據測試結果的成立,不成立分別執行操作,所以能夠嵌套使用,進行多次判斷。例如:首先判斷某學生的得分是否幾個,若幾個則再次判斷是否高于90分等,格式如下:

Shell條件測試語句及三種if語句

Shell條件測試語句及三種if語句

案例:

Shell條件測試語句及三種if語句

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中宁县| 崇仁县| 台前县| 清镇市| 怀来县| 海晏县| 桓仁| 黎平县| 开封市| 徐州市| 池州市| 安西县| 海晏县| 克什克腾旗| 于田县| 诏安县| 大渡口区| 安图县| 古丈县| 屏东县| 象山县| 汶上县| 罗江县| 乌鲁木齐市| 珲春市| 肇庆市| 钟山县| 蕉岭县| 台前县| 仙游县| 清苑县| 阿拉善左旗| 余干县| 那坡县| 泰州市| 屯留县| 神木县| 文化| 桃园市| 青浦区| 西宁市|