• [^] # Pièges du shell

    Posté par . En réponse au journal Les cgroups, un outil trop méconnu. Évalué à 5.

    S’il n’y avait que ça qui soit piégeux en shell...

    Par exemple, tu peux utiliser cut pour récupérer un champ ; tu peux aussi utiliser sort pour trier selon un champ.
    Avec cut, -f indique le champ (« field » en anglais), -d le délimiteur.
    Tu te dirais qu’avec sort, ce serait pareil.
    Eh bien non ! Avec sort, -k indique le champ selon lequel on trie — la clé (« key ») de tri, c’est incohérent, mais ça a un sens — et -t indique le délimiteur — et là, le sens, on le cherche...

    Et il y a d’autres sources d’« amusement » :

    $ [ -z $bidon ] && echo oui
    oui
    $ [ $bidon = "" ] && echo oui
    bash: [: = : opérateur unaire attendu

    Il fallait écrire [ "$bidon" = "" ], parce que le shell commence par faire une expansion de variables et ensuite analyse la chaîne de caractères résultante, et à ce stade, ce qu’il voit, c’est [ = "" ] ; curieusement, -z est robuste à ce problème.

    « Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone