Apa yang Anda gambarkan harus berfungsi dengan baik - selama Anda menggunakan jalur absolut, dan -f("File ada dan merupakan file biasa") benar-benar tes yang ingin Anda lakukan.
Saya melihat jejak /di dalam apa yang Anda posting di pertanyaan Anda - Apakah Anda menguji direktori? Itu seharusnya -d, atau hanya -e("Ada sesuatu dengan nama itu - terlepas dari jenis")
Juga perhatikan bahwa kecuali sesuatu di sepanjang jalan tidak dapat dibaca test( [) harus dapat memberi tahu Anda jika file yang dimiliki oleh root ada atau tidak (misalnya [ -f /root/.ssh/known_hosts ]mungkin akan gagal, karena direktori /root/.ssh tidak (atau setidaknya tidak seharusnya dapat dibaca oleh pengguna normal. [ -f /etc/crontab ]harus berhasil).