我有在它下面的两行cron作业:为什么用-r测试的文件不能被猫读取?
LOCK=/var/run/dns-check
...
if [ ! -r "$LOCK" -o "$ADDR_NOW" != "$(cat $LOCK)" ] ; then
它是在脚本中唯一采用cat
。今天我收到了一封来自cron的邮件,内容如下:
cat: /var/run/dns-check: No such file or directory
我想知道这里发生了什么。
我正在测试文件-r
以检查它是否可读并且否定结果。这意味着,如果文件不可读,则检查成功。评估可以在这里停止,因为表达式已经是真的。 cat
将不会被调用。
否则将评估-o
条件,也就是说,如果文件存在,则执行cat
。
为什么cat
报告错误,即文件无法读取,但test -r
发现它是可读的?
重要的是区分“'LOCK'不可读”和“'$ LOCK'为空”?如果没有,你可以使用'[“$ ADDR_NOW”!=“$(cat”$ LOCK“2>/dev/null)”]''。 – chepner 2014-10-09 14:12:25