2012-02-05 19 views
16

Ho uno script che è uno script in una catena di altri che invia un'email.BASH, controlla se il file esiste e continua else exit

All'inizio dello script, voglio controllare se esiste un file e continuare solo se esiste, altrimenti basta uscire.

Ecco l'inizio del mio script:

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

Tuttavia continuo a ricevere un messaggio che dice:

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

Tutti gli indicatori?

+2

Perché hai bisogno di "continuare" qui? –

risposta

24

Change a questo:

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

Un condizionale non è un ciclo, e non c'è nessun luogo è necessario saltare. L'esecuzione continua semplicemente dopo il condizionale comunque.

(ho anche rimosso l'inutile &&. Non che la cosa dovrebbe accadere, ma solo nel caso in cui il echo fallisce non c'è alcun motivo per non uscire.)

+0

Grazie ha più senso dopo la spiegazione :) – user1190083

+1

+1 per non continuare e per continuare a fallire in caso di errore. –

1

Sì. Rilasciare il else continue. È completamente inutile.

1

Il tuo problema è con la linea continue che viene normalmente utilizzata per saltare alla successiva iterazione di un ciclo for o while.

Pertanto, è sufficiente rimuovere la parte else dello script per consentirne il corretto funzionamento.

Problemi correlati