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 | 非空字串 |
留言
張貼留言