En un script bash
, debo verificar la existencia de varios archivos.Bash: ¿Cómo puedo verificar si existen ciertos archivos?
sé una manera incómoda para hacerlo, que es la siguiente, pero eso significaría que mi programa principal tiene que estar dentro de esa estructura anidada fea:
if [ -f $FILE1 ]
then
if [ -f $FILE2 ]
then
echo OK
# MAIN PROGRAM HERE
fi
fi
La versión siguiente no funciona:
([ -f $FILE1 ] && [ -f $FILE2 ]) || (echo "NOT FOUND"; exit 1)
echo OK
imprime
NOT FOUND
OK
¿hay una manera elegante de hacer esto bien?
ACTUALIZACIÓN: Ver la respuesta aceptada. Además, en términos de elegancia me gusta Jonathan Leffler's answer:
arg0=$(basename $0 .sh)
error()
{
echo "$arg0: [email protected]" 1>&2
exit 1
}
[ -f $FILE2 ] || error "$FILE2 not found"
[ -f $FILE1 ] || error "$FILE1 not found"
Gracias, eso se ve bien. Solo el 'o' (||) debería ser un 'y' (&&), supongo. – Frank
arreglado ya :) difícil con lógica en la noche :) –