
Avec plusieurs changements non rétrocompatibles
La version 3.0 de Friendly Interactive Shell est disponible depuis peu avec vingt changements non rétrocompatibles et une liste de dépréciations beaucoup moins longue.
Ce qui a changé et qui devrait poser des problèmes de compatibilité avec des scripts montés avec d’anciennes versions de Fish est que les tentatives d’assignation de valeur (via une unique commande) à plusieurs éléments d’un tableau sont désormais considérées comme invalides ; en d’autres termes, l’usage d’un set tab[1], tab[2] devrait générer le message « erreur de syntaxe. » Pareil pour les tentatives d’accès à l’élément « 0 » d’un tableau ; les têtes derrière le shell ont décidé que les indices des tableaux et listes sont numérotés à partir de 1 sous Fish 3.0, ce, comme c’est le pour des langages comme Visual Basic. L’un des plus gros changements aurait été le retrait de l’opérateur de redirection (^) et du caractère générique (?), mais ce n’est qu’une question de temps puisque l’équipe de développement les a fait apparaître sur la liste des dépréciations. Ces fonctionnalités vont donc tirer leur révérence dans une prochaine release.
Le shell s’est amélioré du point de vue de la syntaxe. À défaut d’écrire and, or ou not dans le cadre de la gestion d’opérations logiques, le développeur peut désormais faire usage de &&, || et ! comme en langage C. Cette nouvelle disposition est destinée à faciliter la migration depuis des shells compatibles POSIX. En sus, la nouvelle mouture permet l’utilisation des variables comme commandes. Fish 3.0 introduit une liste d’une dizaine de changements en ce qui concerne les nouvelles commandes et les nouveaux éléments de syntaxe.
Fish est un shell Unix conçu pour être plus interactif et convivial que ses prédécesseurs (bash, zsh, csh, etc.) dans la même famille. La syntaxe de Fish ressemble à celle d’un shell compatible POSIX, mais s’en écarte en beaucoup d’aspects, notamment, ceux pour lesquels ses concepteurs ont estimé que le shell POSIX est mal conçu. Lors de la création de scripts complexes avec Fish, il peut être utile d’analyser les arguments fournis par le biais de la ligne de commande. La plupart des tutoriels disponibles en ligne s’appuient sur bash pour cette opération et vont expliquer l’utilisation de getopts. Sous Fish, cette commande n’est pas disponible, mais les utilisateurs disposent du standard Unix getopt pour atteindre le même objectif. Illustration avec la portion de code qui suit.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | function help_exit echo "Usage: [options] arguments..." echo "Arguments:" echo "-a : Do something" echo "-d : Do something else" echo "-c stuff : Do someting with stuff" exit 1 end set args (getopt -s sh abc: $argv); or help_exit set args (fish -c "for el in $args; echo \$el; end") set i 1 while true switch $args[$i] case "-a" echo "argument a is specified" case "-b" echo "argument b is specified" case "-c" set i (math "$i + 1") echo "value of argument c is" $args[$i] case "--" break end set i (math "$i + 1") end set pargs if math "$i <" (count $args) > /dev/null set pargs $args[(math "$i + 1")..-1] end echo "positional arguments:" $pargs |
Et vous ?




Voir aussi :

Vous avez lu gratuitement 6 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.