Những gì bạn mô tả sẽ hoạt động tốt - miễn là bạn đang sử dụng các đường dẫn tuyệt đối và -f ("Tệp tồn tại và là một tệp thông thường") thực sự là thử nghiệm bạn muốn thực hiện.
Tôi thấy một dấu vết /trong những gì bạn đã đăng trong câu hỏi của bạn - Bạn đang thử nghiệm cho một thư mục? Điều đó nên -d, hoặc đơn giản -e("Một cái gì đó tồn tại với tên đó - bất kể loại nào")
Cũng lưu ý rằng trừ khi một cái gì đó trên đường đi là không thể đọc được test( [) sẽ có thể cho bạn biết nếu một tập tin sở hữu bởi root tồn tại hay không (ví dụ như [ -f /root/.ssh/known_hosts ]có thể sẽ thất bại, vì thư mục /root/.ssh không (hoặc ít nhất shouldn Người dùng bình thường có thể đọc được. [ -f /etc/crontab ]nên thành công).