發表文章

script if items

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 非空字串