linux中的shell指令碼管理(二)

來源:互聯網
上載者:User

在Shell指令碼中執行使用if語句的好處是:可以根據特定的條件(eg:判斷備份目錄是否存在)來決定是否執行某項操作,當滿足不同的條件時執行不同的操作(eg:備份目錄不存在則建立該目錄,否則跳過操作)。該文將分別從條件測試操作,if語句結構,應用樣本這三個方面講解if語句在Shell指令碼中的應用。

1、條件測試操作:

需要在Shell指令碼中有選擇性地執行任務時,首先面臨的問題就是,如何設定命令執行的條件?

在Shell環境中,可以根據命令執行後返回狀態值來判斷該命令是否成功執行,當傳回值為0是表示成功執行,否則(非0值)表示執行失敗。用於特定條件運算式的測試時,可以使用Linux系統中提供的專用工具——test命令、

使用test測試命令時,可以有以下兩種形式。

test       條件運算式

【 條件運算式 】

這兩種方式的作用完全相同,但通常後一種形式更為常用,也更貼近編程習慣。需要注意的是,方括弧“[”或者“]”與條件運算式語句之間至少需要有一個空格進行分隔。

根據需要判斷的條件內容不同,條件操作也不同,最常用的條件主要包括檔案狀態測試,比較整數值大小,比較字串,以及同時判斷多個條件時的邏輯關係,下面將分別進行講解。以下主要採用方括弧的測試形式。

1.1、測試檔案狀態

檔案狀態測試是指根據給定的路徑名稱,判斷該名稱對應的是檔案還是目錄,或者判斷檔案是否可讀,可寫,可執行等。根據判斷的狀態不同,在條件運算式中需要使用不同的操作選項。

-d:測試是否為目錄(Directory)。

-e:測試目錄或檔案是否存在(Exist)。

-f:測試是否為檔案(File)。

-r:測試目前使用者是否有許可權讀取(Read)。

-w:測試目前使用者是否有許可權寫入(Write)。

-x:測試目前使用者是否可執行(Excute)該檔案。

-L:測試是否為符號串連(Link)檔案。

執行條件測試操作以後,通過預定義變數“$?”可以獲得測試命令的返回狀態值,從而能夠判斷該條件是否成立(返回0值表示條件成立,非0值表示條件不成立)。但通過這種方式查看測試結果會比較繁瑣。

例1:測試“/etc/hosts”是否是檔案,並通過“$?”變數查看返回狀態值,據此判斷測試結果。

[ -f /etc/hosts ]echo $?0   //傳回值為0,表示上一步測試的條件成立。

例2:測試“/media/cdrom/Server”及其父目錄是否存在,如果存在則顯示“YES”否則不輸出任何資訊。

[ -e /media/cdrom/Server ] && echo "YES"                                                                        // 無輸出表示該目錄不 存在[ -e /media/cdrom ] && echo "YES"YES

1.2、整數值 比較:

整數值比較是指根據給定的兩個整數值,判斷第一個數是否大於、等於、小於。。。。。。第2個數,可以使用的操作選項如下:

-eq:第一個數等於(Equal)第二個數。-ne:第一個數不等於(Not Equal)第二個數。-gt:第一個數大於(Greater Than)第二個數。-lt:第一個數小於(Lesser Than)第二個數。-le:第一個數小於或等於(Lesser or Equal)第二個數。-ge:第一個數大於或等於(Greater or Equal)第二個數。

整數值比較的測試操作在Shell指令碼編寫中的應用較多,如:用於判斷磁碟使用率、登入使用者數量是否超標以及用於控制指令碼語句的迴圈次數等。

例1:測試當前登入到系統中的使用者數量是否小於或等於10,是則輸出”YES“。

who | wc -l5[ `who | wc -l` -le 10 ] && echo ”YES"YES

本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.