http://www.study-area.org/linux/system/linux_shell.htm
script 之所以聰明﹐在於它能夠對一些條件進行測試( test )。您可以直接用 test 命令﹐也可以用 if 敘述﹐例如﹕test -f ~/test.sh 。它的意思是測試一下 ~/test.sh 這個檔案是否存在﹐這個 -f 通常用在檔案上面的測試﹐除了它﹐還有很多﹕
標籤 | 代表意思 |
-G | 存在﹐並且由 GID 所執行的行程所擁有。 |
-L | 存在﹐並且是 symbolic link 。 |
-O | 存在﹐並且由 UID 所執行的行程所擁有。 |
-S | 存在﹐並且是一個 socke 。 |
-b | 存在﹐並且是 block 檔案﹐例如磁碟等。 |
-c | 存在﹐並且是 character 檔案﹐例如終端或磁帶機。 |
-d | 存在﹐並且是一個目錄。 |
-e | 存在。 |
-f | 存在﹐並且是一個檔案。 |
-g | 存在﹐並且有 SGID 屬性。 |
-k | 存在﹐並且有 sticky bit 屬性。 |
-p | 存在﹐並且是用於行程間傳送資訊的 name pipe 或是 FIFO。 |
-r | 存在﹐並且是可讀的。 |
-s | 存在﹐並且體積大於 0 (非空檔)。 |
-u | 存在﹐並且有 SUID 屬性。 |
-w | 存在﹐並且可寫入。 |
-x | 存在﹐並且可執行。 |
事實上﹐關於這些測試項目還有很多很多﹐您可以 man bash 然後參考 CONDITIONAL EXPRESSIONS 那部份。另外﹐我們還可以同時對兩個檔案進行測試﹐例如﹕test file1 -nt file2 就是測試 file1 是否比 file2 要新。這種測試使用的標籤是﹕
標籤 | 代表意思 |
-nt | Newer Than﹕第一個檔案比第二個檔案要新。 |
-ot | Older Than﹕第一個檔案比第二個檔案要舊。 |
-ef | Equal File﹕第一個檔案和第二個檔案其實都是同一個檔案 (如 link)。 |
標籤 | 代表意思 |
= | 等於 |
!= | 不等於 |
< | 小於 |
> | 大於 |
-eq | 等於 |
-ne | 不等於 |
-lt | 小於 |
-gt | 大於 |
-le | 小於或等於 |
-ge | 大於或等於 |
-a | 雙方都成立 |
-o | 單方成立 |
-z | 空字串 |
-n | 非空字串 |
留言
張貼留言