shellscript學習(三)判斷式的使用:test命令以及[]

來源:互聯網
上載者:User

shell script中的判斷式,顧名思義就是判斷一個式子是否滿足一定的條件。在script中有如下幾種實現方式:

1、使用test命令

先舉個簡單的例子,比如說判斷在目前的目錄下判斷一個檔案script1.sh是否存在,那麼根據test使用的文法,可寫成如下: test -e script1.sh 如果存在的話那麼返回的值是1,於是我們結合 && 以及 || 邏輯運算可構造:

test -e script1.sh && echo "exist" || echo "Not exist"

如果存在的話,那麼會繼續進行&&後面的操作,輸出"exist"。如果不存在,直接執行 || 後面的操作,輸出“Not exist”。

順便提一句,在script中 && 和 || 的用法和程式設計語言中的用法是相同的。

下面具體來看看test命令對應其它參數時的功能:

一、test [-efdbcSPL] filename 用來判斷一個檔案是否存在,以及檔案的類型

-f 判斷是否是一個檔案。 -d 判斷是否是一個dictionaty .-b (blocl device裝置) -c (character device 裝置)

-S (Socket檔案) -P(FIFo/pipe檔案) -L(link file)

二、test [-rwx] filename

判斷一個檔案的執行許可權, -r 判斷是否是可讀的。-w 判斷是否是writable。-x 判斷是否是 executable

三、test file1 { [-nt] [-ot] [-ef] } file2

用來判斷這兩個檔案的新舊,其中 -ef用來判斷是否是同一檔案,或者是否鏈結到同一個檔案。 -nt 是(newer than) 的縮寫,所以我們只需要記住縮寫就可以了。

四、 test n1 { [-eq][-ne][-gt][-lt][-ge][-le] } n2

用來判斷兩個整數 n1 和 n2 之間的關係 注意 在這種情況下 n1 和 n2 是被作為整數來對待的。當然加雙引號也是可以的。

五、test [-zn] string 判斷string 是空還是非空

test str1=str2 判斷兩個string是否相等

test str1!=str2 判斷是否不等於

六、 -a 是當兩個條件都成立時才返回true.

-o 是任一個條件成立時返回 true.

! 當其中一個不成立時返回。

下面是一個例子來說明 test 的使用:這個指令碼可以用來根據使用者輸入的檔案名稱判斷檔案是否存在,以及是屬於常規檔案還是文檔,還可以輸出文檔的類型。


2、下面來看看通過 “[ ]”怎樣來進行判定<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+WyBdILrNdGVzdNPQzazR+bXEuabE3KOsv8nS1Mq5s8zQ8rzyu6+jrMjno7o8L3A+CjxwPlsgJnF1b3Q7c3RyMSZxdW90OyA9PSAmcXVvdDtzdHIyJnF1b3Q7IF0gv8nS1MXQts/V4sG9uPbX1rf7tK7Kx7fxz+C1yKGjPC9wPgo8cD5bIC1lIGZpbGVuYW1lIF0gv8nS1MXQts9maWxlbmFtZdXiuPbOxLz+yse38bTm1NqhozwvcD4KPHA+PHN0cm9uZz7U2sq508NbIF0gvfjQ0MXQtqi1xMqxuvLT0NK7uPbKws/u0qrXotLitcTKx6Os1NrAqLrFwb2x39LUvLC3+7rFwb2x37750qrT0L/VJiMyNjY4NDuho8/Cw+bAtL+00ru49sD919OjutXiuPa9xbG+v8nS1Lj5vt3Tw7untcTK5MjryscgeQ=="Y 或是 n/N 來做判斷。


3、下面再來看看shell script 的預設變數 $0, $1, $...

這裡講的是在執行shell指令碼的時候可以帶上一些參數,而這些參數的個數,位元可以通過shell指令碼的預設變數識別出來。

例如: sh sh01.sh A B C D 那麼這裡的 A B C D 就是四個c參數。

$0 = sh01.sh 代表的是執行的指令檔名

$# 代表的是後面參數的個數,這裡是4

$@ 代表的是這裡所有的參數情況。這裡是 A B C D

下面是一個指令碼的例子:


其中shift命令可以造成參數的位移。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.