Tengo un if
script en mi bash que tiene que verificar si CUALQUIERA de los 2 archivos existe, si no existen debería hacer eco.
Código que tengo:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Pero esto no parece funcionar por alguna razón.
Estoy 110% seguro de que estos 2 archivos no existen. No recibo ningún error, simplemente no entra en el if
.
Soy nuevo en bash scripting, así que no estoy seguro de qué podría estar mal.
fuente
[[ ! -f /etc/.../... ]]; echo $?
por cada uno.[[ -f xxx ]]
devuelve verdadero si xxx existe y es un archivo normal (o un enlace simbólico a un archivo normal). Devolverá falso si no existe, o si no puede decir si existe o no o si existe pero no es un archivo normal (directorio, tubería, dispositivo, socket ...) o si es un enlace simbólico a un archivo que no existe o no puede decir si existe o no o no es un archivo normal ...[[ -e $file ]] || [[ -L $file ]]
está más cerca de una prueba de existencia.ls -d -- "$file" > /dev/null 2>&1
Está aún más cerca. Y, como regla, este tipo de prueba conduce a condiciones de carrera. Tal vez hay otra forma.