2010-12-14 6 views
0

Je dois actuellement automatiser une tâche où j'ai besoin d'exécuter 5 commandes, même si une commande échoue, toutes les commandes suivantes devraient être exécutées, actuellement si les 4èmes commandes échouent, le script shell quitte et n'exécute pas la 5ème commande.Comment écrire un script shell exécutant la commande suivante même si la commande en cours échoue?

Alors, que dois-je faire pour que le script shell exécute toutes les commandes suivantes même si la commande en cours échoue?

+4

Postez votre script shell ici, s'il vous plaît (la partie correspondante). Il ne devrait pas sortir sans instructions spéciales pour quitter en cas d'échec. Peut-être que vous utilisez make? – khachik

Répondre

4

En supposant que vous votre bash comme interpréteur de script (ou/bin/sh est un lien symbolique vers bash), s'il vous plaît vérifier si votre script ne pas

set -e 

partout dans le code.

4

Eh bien, quel est le problème avec le code ci-dessous?

#!/bin/bash 
cmd1 
cmd2 
cmd3 
cmd4 
cmd5 
1

Je ferais

|| true 

Exemple:

(set -e; false ; echo not here;) 
(set -e; false || true ; echo still here;) 

Exemple:

command1 || true 
command2 || true 
command3 || true 
command4 || true 
command5 || true 

De cette façon, vous pouvez garder le drapeau -e, est un bon indicateur.

Questions connexes