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