
Envoyé par
ok.Idriss
Tout d'abord, je n'ai rien contre la syntaxe de tes tests en awk, il m'arrive également de l'utiliser (tu remarquera que contrairement à toi, j'ai en aucun cas affirmé que tes façons de faire étaient des mauvaises pratiques même si j'ai d'autres préférences). Pour autant, invoquer la lisibilité pour dire que telle pratique est mauvaise n'est pas un argument objectif (et donc recevable).
La pratique en awk c'est d'avoir une condition suivi d'un bloc. J'y peux rien c'est le man qui le dis. J'ai déjà expliqué plusieurs fois à mon avis quand utiliser les conditions à l'intérieur ou à l'exterieur. Si tu choisi d'ignorer mon propos.

Envoyé par
ok.Idriss
Oui et bien, trouve moi une commande shell qui ne renvoi pas 0 en cas de succès. Si un programme ne respecte pas cette norme, il n'a rien à faire dans un test dans un script (oui je suis subjectif là).
Si tu m'en trouve une, je veux bien tenter de reconsidérer cet argument (et encore).
On s'en fout. D'une part un script shell ne se limite pas à lancer des builtins et des commandes issues de coreutils, mais surtout tu le montre comme un if-then-else et tu nous parle de l'utiliser comme un if-then-catch. La majorité du temps (toutes en faite dans les autres langages) tu ne veux pas que ton bloc else s'exécutent en cas d'erreur dans le bloc then. Ça peut être une bonne idée de présenter une syntaxe pour gérer les erreurs simple ainsi :
mais ce n'est pas ce que tu montre dans ton exemple
Un cas simple que j'ai vu la semaine dernière :
[ cond ] && mount -o 'machin,truc' "${dir}" || mount -o 'machin2,truc2' "${dir}"
Nous ne voulions pas que le second mount se fasse si le premier échouait (d'ailleurs ça nous a posé des problèmes du coup).

Envoyé par
ok.Idriss
J'y peut rien si ces arguments sont trop subjectifs (lisibilité par exemple) ou dépendent trop d'un contexte hors sujet (commande ne renvoyant pas 0 en cas de succès) pour que j'en tienne compte.
Et après on explique que les scripts shell ne sont pas fiable. Avoir un flot de contrôle qui marche que si toutes les programmes sont biens écris et qui sinon explose, ça ne me paraît être une bonne idée.

Envoyé par
ok.Idriss
Il y a eu pourtant dans cette discussions des mauvaises pratiques et des erreurs qui ont été signalées, certaines ont été corrigées, d'autres sont prévues pour une version prochaine (le fait qu'il soit pas utile d'ouvrir un sous-shell dans le cas d'un pipe par exemple).
Oui la différence c'est que les exemples que je met pour illustrer mon propos n'ont pas vocation à être considéré comme un cours. Sinon ils seraient expliquaient.

Envoyé par
ok.Idriss
Oui c'est sûr qu'amener Perl sur une discussion qui parle de bash et awk sur un forum Shell GNU, c'est pas un troll

Il manquait un smiley. La réponse était ironique parce que tu as passer ta journée à m'expliquer que tout était de mon point de vu. Néanmoins la différence entre perl, python et ruby. C'est que perl a était conçu dans l'optique de remplacer awk, grep et sed. Je n'étaillerais pas avec des exemples, j'ai l'impression que ça t'énerverait.

Envoyé par
ok.Idriss
Bon, je crois également qu'il faut mettre fin à ce débat stérile.
Ne t'inquiète pas. À moins que tu sorte de l'argumentaire simpliste, je ne répondrais plus non plus.
Partager