Answers:
您正在描述的内容应该可以正常工作-只要您使用绝对路径,并且-f
(“文件存在并且是常规文件”)实际上就是您要执行的测试。
我/
在问题中张贴了一条尾迹-您是否正在测试目录?应该是-d
或简单地说-e
(“该名称存在某种东西-与类型无关”)
还要注意,除非沿途的某些内容不可读test
([
)应该能够告诉您root拥有的文件是否存在(例如,[ -f /root/.ssh/known_hosts ]
可能会失败,因为/root/.ssh目录不存在(或者至少应该(不会被普通用户阅读 [ -f /etc/crontab ]
)。
sudo
命令失败(密码错误,/ etc / sudoers等中不允许),它将产生与文件不存在相同的结果。
sudo
工作的部分而定的:)
if sudo test -f "/path/to/file"; then
echo "FILE EXISTS"
else
echo "FILE DOESN'T EXIST"
fi
另一方面,要完成操作,如果您想从根目录检查某个用户是否可以读取文件或目录,则可以使用
if sudo -u username test -f "/path/to/file"; then
echo "FILE EXISTS"
else
echo "FILE DOESN'T EXIST"
fi