本文是在 Shell Script 判斷檔案是否可讀或可寫入的方法。
Shell Script 還可以用以下參數測試檔案, 當符合以下條件便會回傳 true:
-w FILE : 檔案存在並可以寫入
-x FILE : 檔案存在並有執行權限
-d FILE : 是一個目錄
-e FILE : 檔案存在
-f FILE : 檔案存在, 而且不是 link
-r FILE : 檔案存在並可以讀取
-s FILE : 檔案存在並且不且空白檔案
-w 測試檔案寫入權限
Shell Script 的 -w 參數可以判斷檔案是否有寫入權限, 如果可以寫入會回傳 true; 不能寫入回傳 flase, 分別有寫法:
[ -w filename.txt ] && echo “Writable” || echo “Not Writable”
test -w filename.txt && echo “Writable” || echo “Not Writable”
以下是一個簡單 Shell Script 的例子, 輸入檔案名稱作為參數, 再測試檔案是否可以寫入:
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/sh [ $# -eq 0 ] && exit 1 FILE="$1" if [ -w "$1" ] then echo "$1 is writable" else echo "$1 not writable" fi |
儲存上面檔案名, 用 chmod 加入執行權限:
然後用以下指令執行 Shell Script:
首先程式會測試是否有傳入參數, 如果沒有便離開。然後用 -w 測試檔案是否可以寫入.
-r 測試檔案讀取權限
如果上面的 Shell Script 改用 -r 參數, 便會測試檔案是否可讀:
[ -r filename.txt ] && echo “Readable” || echo “Not Readable”
test -r filename.txt && echo “Readable” || echo “Not Readable”
將上面的 Shell Script 改寫, 只要將 -w 改成 -r 便可以測試檔案是否可讀:
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/sh [ $# -eq 0 ] && exit 1 FILE="$1" if [ -r "$1" ] then echo "$1 is readable" else echo "$1 not readable" fi |