2 votes

Comment écrire un shell script qui exécute la commande suivante même si la commande actuelle échoue ?

J'ai actuellement besoin d'automatiser une tâche où je dois exécuter 5 commandes, même si une commande échoue, toutes les commandes suivantes doivent être exécutées, actuellement si la 4ème commande échoue, le shell script sort et ne lance pas la 5ème commande.

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

4voto

x13n Points 1909

Quel est le problème avec le code ci-dessous ?

#!/bin/bash
cmd1
cmd2
cmd3
cmd4
cmd5

4voto

AmokHuginnsson Points 782

En supposant que vous ayez bash comme interpréteur de script (ou /bin/sh est un lien symbolique vers bash), veuillez vérifier si votre script ne possède pas

set -e

n'importe où dans le code.

4voto

user976283 Points 54

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, c'est un bon drapeau.

1voto

ennuikiller Points 28005

La commande "trap" peut être utile ici :

piège

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X