Existe-t-il une commande linux bash telle que la Java try catch enfin?) Ou le shell Linux continue-t-il toujours?
try {
`executeCommandWhichCanFail`
mv output
} catch {
mv log
} finally {
rm tmp
}
Eh bien, en quelque sorte:
{ # your 'try' block
executeCommandWhichCanFail &&
mv output
} || { # your 'catch' block
mv log
}
rm tmp # finally: this will always happen
D'après votre exemple, il semblerait que vous essayiez de faire quelque chose de similaire à la suppression constante d'un fichier temporaire, quelle que soit la façon dont le script se termine. Pour ce faire, essayez avec la commande intégrée trap
de capturer le signal EXIT
.
#!/bin/bash
trap 'rm tmp' EXIT
if executeCommandWhichCanFail; then
mv output
else
mv log
exit 1 #Exit with failure
fi
exit 0 #Exit with success
L'instruction rm tmp
Dans trap
est toujours exécutée à la fermeture du script. Le fichier "tmp" essaiera toujours d'être supprimé.
Les pièges installés peuvent également être réinitialisés. un appel à intercepter avec uniquement un nom de signal réinitialisera le gestionnaire de signaux.
trap EXIT
Pour plus de détails, voir la page de manuel bash: man bash
mv
prend deux paramètres, alors peut-être avez-vous vraiment voulu modifier le contenu du fichier de sortie:
echo `{ execCommand && cat output ; } || cat log`
rm -f tmp