Comments on: Set -e for the win http://sametmax.com/set-e-for-the-win/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: Sam http://sametmax.com/set-e-for-the-win/#comment-6953 Fri, 15 Mar 2013 09:28:35 +0000 http://sametmax.com/?p=5408#comment-6953 Ahhh. C’est ça que j’avais pas capté. set -o pipefailt, et pas juste set -o. Ok, j’avais mal compris.

]]>
By: tmonjalo http://sametmax.com/set-e-for-the-win/#comment-6951 Fri, 15 Mar 2013 09:15:37 +0000 http://sametmax.com/?p=5408#comment-6951 set -e marche avec tous les shells mais a des limites, notamment pour les subshells et les pipes.

Avec bash, on peut aller un peu plus loin :
set -o posix # les sous-shells héritent de ces options
set -o errexit # équivalent long de set -e
set -o pipefail # intercepte les erreurs de commandes suivies d’un pipe

]]>
By: Cladmi http://sametmax.com/set-e-for-the-win/#comment-6943 Thu, 14 Mar 2013 19:57:03 +0000 http://sametmax.com/?p=5408#comment-6943 Le problème que j’ai eu avec ‘set -e’ c’est quand je voulais faire un traitement de la sortie de grep sur une ligne différente. Avec un grep assez long évidemment.

Je trouve ça propre de faire ça comme ça

grep -q -e 'pattern_tres_tres_long' \
    -e 'pattern multiple meme' \
    -e 'avec pleins de choses a trouver' \
    --exclude-dir='houla_lui_on_l_aime_pas' \
    fichier 2>/dev/null
 
if [[ $? -eq 0 ]]; then
    echo "Ca match, on va faire un traitement"
else
    echo "Ca me va aussi c'est juste un cas different"
fi

Ça évite d’avoir le grep compliqué dans le if, mais du coup avec set -e, ça marche pas.

Et pour le faire marcher avec set -e, je me suis retrouvé à faire des trucs ignobles du genre:

ret=$(grep ... || echo 'OK')
if [[ "$ret" == "OK" ]]; then
...

C’est moche, je sais, mais j’avais pas trouvé mieux.

]]>
By: kontre http://sametmax.com/set-e-for-the-win/#comment-6933 Thu, 14 Mar 2013 11:58:47 +0000 http://sametmax.com/?p=5408#comment-6933 Oooooh ! Shiny !

]]>
By: Lujeni http://sametmax.com/set-e-for-the-win/#comment-6930 Thu, 14 Mar 2013 11:27:54 +0000 http://sametmax.com/?p=5408#comment-6930 j’ai toujours utiliser le double pipe pour gérer les erreurs

]]>
By: Sam http://sametmax.com/set-e-for-the-win/#comment-6927 Thu, 14 Mar 2013 10:17:22 +0000 http://sametmax.com/?p=5408#comment-6927 Et je viens de découvrir “set -o” qui fait que “set -e” marche aussi pour les commandes intermédiares à l’intérieur des pipes.

C’est décidé, tous mes scripts commencerons maintenant par “set -eox”.

EDIT: et merde, -o est pas cross shell. Bon, on oublie -o.

]]>
By: AlexRNL http://sametmax.com/set-e-for-the-win/#comment-6925 Thu, 14 Mar 2013 09:29:11 +0000 http://sametmax.com/?p=5408#comment-6925 Excellent ! À ranger précieusement à côté du set -x

]]>