То, что вы описываете, должно работать нормально - если вы используете абсолютные пути, и -f
(«Файл существует и является обычным файлом») - это действительно тест, который вы хотите выполнить.
Я вижу трейлинг /
в том, что вы разместили в своем вопросе - тестируете ли вы каталог? Это должно быть -d
или просто -e
(«Что-то существует с этим именем - независимо от типа»)
Также обратите внимание, что если что-то по пути не является читабельным test
( [
), должно быть в состоянии сказать вам, существует файл, принадлежащий root или нет (например [ -f /root/.ssh/known_hosts ]
, вероятно, потерпит неудачу, потому что каталог /root/.ssh не существует (или, по крайней мере, не должен) не должен быть ) читаемым для обычного пользователя. [ -f /etc/crontab ]
должен преуспеть).