Table des matières
Les tableaux en ZSH
Déclaration d'un tableau
% array=(1 2 3) % echo $array[2] 2
<note important> Attention, les indices 0 et 1 correspondent tous les deux au premier élément du tableau ! </note>
Diviser une chaîne de caractères en un tableau de mots
% string="Welcome to the real world, Neo" % words=(${=string}) % echo $words[6] Neo
Diviser une chaîne de caractères en un tableau de mots en indiquant le séparateur
% mypath="/var/log/messages" % myfiles=(${(s:/:)mypath}) % echo $myfiles[2] log
Créer un tableau de lignes à partir d'un fichier
% buffer=("${(f)$(< /etc/hosts)}") echo $buffer[1] 127.0.0.1 eva-O1.linagora.com eva-01
Accéder à plusieurs éléments d'un tableau
% echo $words[1,5] Welcome to the real world, % echo ${words[1,5]//,/ } Welcome to the real world
Taille d'un tableau
% echo ${#words} 6
Vérifier la présence d'un élément
% words=(Welcome to the real world, Neo) % [[ -n ${(M)words:#to} ]] && echo 1 1 % [[ -n ${(M)words#new} ]] || echo 0 0
on peut aussi utiliser l'équivalent builtin de test que zsh implémente pour être compatible avec les vieux sh. C'est un poil plus court mais le guide zsh demande de préférer [[.
% words=(Welcome to the real world, Neo) % [ ${(M)words:#to} ] && echo 1 1 % [ ${(M)words#new} ] || echo 0 0
Suppression d'un élément d'un tableau
% lists=(global www asyd guest) % lists[(r)global]=() % echo $lists www asyd guest
<note warning> Attention, l'utilisation de la syntaxe
lists[(r)global]=''
pour supprimer un élément n'est pas correcte. En effet, elle définie l'élément à vide, plutôt que le détruire. L'utilisation de cette notation peut donc provoquer des bugs difficiles à cibler.
% lists=(a b c) % lists[(r)b]='' % echo $lists a c % echo ${#lists} 3
Pour plus d'information, consultez la section 14 de la documentation (http://zsh.dotsrc.org/Doc/Release/zsh_14.html#SEC72). </note>
shell/zsh/grammaire/tableaux.txt · Dernière modification: 2006/10/26 11:58 (modification externe)