2012-02-05 29 views
16

Tengo un script que es un script en una cadena de otros que envía un correo electrónico.BASH, compruebe si el archivo existe y continúe, salga

Al comienzo de la secuencia de comandos, quiero verificar si existe un archivo y continuar solo si existe, de lo contrario, simplemente salga.

Aquí es el comienzo de mi guión:

{ 
if [ ! -f /scripts/alert ]; 
then 
    echo "File not found!" && exit 0 
else 
     continue 
fi 
} 

Sin embargo, me sale un mensaje que dice:

line 10: continue: only meaningful in a `for', `while', or `until' loop 

Cualquier punteros?

+2

¿Por qué necesita el 'continuar' en absoluto aquí? –

Respuesta

24

Cambio a esto:

{ 
if [ ! -f /scripts/alert ]; then 
    echo "File not found!" 
    exit 0 
fi 
} 

Un condicional no es un bucle, y no hay lugar que necesita para saltar. La ejecución simplemente continúa después del condicional de todos modos.

(I también se elimina la innecesaria &&. No es que debería ocurrir, pero por si acaso el echo falla no hay razón para no salir.)

+0

Gracias tiene más sentido después de su explicación :) – user1190083

+1

+1 por no continuar y por seguir fallando si falla. –

1

Sí. Suelta el else continue. Es completamente innecesario.

1

Su problema es con la línea de continue que normalmente se utiliza para saltar a la siguiente iteración de un bucle for o while.

Por lo tanto, solo eliminar la parte else del script debería permitir que funcione.

Cuestiones relacionadas