本文是在 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 |