Après être entré set -e
dans un shell bash interactif, bash se fermera immédiatement si une commande se termine avec une valeur non nulle. Comment annuler cet effet?
Après être entré set -e
dans un shell bash interactif, bash se fermera immédiatement si une commande se termine avec une valeur non nulle. Comment annuler cet effet?
Réponses:
Avec set +e
. Oui, c'est en arrière que vous activez les options du shell avec set -
et les désactivez avec set +
. Raisins secs historiques, donchanow.
+
c'est comme -
mais traverser quelque chose signifie "pas" comme dans "≠".
Il peut être difficile à utiliser set +e
/ set -e
chaque fois que vous souhaitez le remplacer. J'ai trouvé une solution plus simple.
Au lieu de le faire comme ceci:
set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e
vous pouvez le faire comme ceci:
command_that_might_fail_but_we_want_to_ignore_it || true
ou, si vous souhaitez enregistrer les frappes et que cela ne vous dérange pas d'être un peu cryptique:
command_that_might_fail_but_we_want_to_ignore_it || :
J'espère que cela t'aides!
:
Je me posais des questions sur l'histoire et j'ai trouvé ma réponse ici , au cas où quelqu'un d'autre serait curieux.