Salut, Lu sur la page tableau de zsh: % lists=(global www asyd guest) % lists[(r)global]='' % echo $lists www asyd guest c'est une erreur ! l'élément est vide mais pas supprimé ! explications : on crée le tableau et on affiche. % a=( un test bete ) % index=0; for el ( $a ) { print $(( ++index )) $el } 1 un 2 test 3 bete j'affecte une chaine vide a a[2] j'affiche % a[2]='' % index=0; for el ( $a ) { print $(( ++index )) $el } 1 un 2 bete on peut croire que $a n'a plus que 2 elements, ce qui est faux : % index=0; for el ( "$a[@]" ) { print $(( ++index )) $el } 1 un 2 3 bete en fait, c'est le contexte d'expansion de a qui change, ce que la boucle for recupere est une expansion de $a et non $a lui-même. dans le guide zsh, chapitre 15.2.2 ( Array Element Assignment ), on peur lire : To delete an element of an ordinary array, assign `()' to that element. To delete an element of an associative array, use the unset command: unset "NAME[EXP]" donc : % a[2]=() % index=0; for el ( "$a[@]" ) { print $(( ++index )) $el } 1 un 2 bete conclusion : qui corrige ? marc -- t�l�phone : 03.90.24.00.19 courriel : marc.chantreux@ulpmm.u-strasbg.fr ---------------------------------------