metalux a écritBonsoir,
Une bonne documentation pour débuter est
celle-ci et ensuite pour progresser, il faut absolument consulter le second lien donné par Rufus T. Firefly. Cependant personnellement, j'avais trouvé cette bible imbuvable pour débuter alors qu'après avoir acquis des connaissances de base, elle m'est apparue comme indispensable.
Pour le lien que je t'ai donné, ne t’attardes pas trop sur les commandes declare et set, elles ne se rencontrent que très rarement dans les scripts et ne servent pas en général, à moins que quelqu'un apporte ses lumières sur ces commandes et me contredise en expliquant leurs utilités.
Ma référence en shell pour moi, c'est un bouquin papier extrêmement bien écrit (le top du top à mon avis en la matière) et pas très gros en plus étonnamment, 200 pages à vue de nez:
"Unix Shell" manuel T-soft aux éditions Eyrolles. Mon exemplaire a 15 ans et il me sert toujours. Je ne sais pas s'il est toujours édité. Il était assez cher par ailleurs mais il les vaut très largement. Tout ce que tu peux trouver ailleurs sur le sujet ressemble a un gros fouillis inexploitable et mal écrit en comparaison !
Voilà voilà... 🙂
-----------------
declare, je connaissais pas jusqu'à très récemment, il semble que ce soit une nouvelle commande de bash ? J'en suis resté à une écriture très académique dans l'ensemble. (voir plus haut)
set, je m'en sers jamais. Pour moi c'est essentiellement une commande interne qui permet de modifier certains réglages de l'interpréteur. Elle sert aussi à manipuler les paramètres reçus en arguments d'une fonction ou d'un script. (avec shift également)
Elle a peut-être d'autres usages mais que je ne connais pas. En ksh elle permet aussi de créer des tableaux.
Si ma mémoire est bonne, il existe une commande "unset" au moins en ksh (en bash aussi, à confirmer) qui permet de déréférencer une variable.
Quant à typeset, d'après moi c'est une commande très précieuse en ce qu'elle me permet d'isoler les variables utilisées dans une fonction. L'idée étant d'éviter d'écraser le contenu d'une variable située dans le corps du script par une variable de même nom située dans une fonction. La base pour se constituer à peu près proprement quelques bibliothèques de fonctions perso utiles. Additionnée à une bonne règle de nommage pour le nom des fonctions, ça roule plutôt bien.
En ksh, elle a plein d'autres usages également, sur les chaînes je crois. Pas forcément utiles à mon avis.
Je n'ai plus très souvent l'occasion d'écrire des choses compliquées en shell. Donc tout cela est donc sous réserve de quelques défauts de mémoire.