À 15:18 +0200 le 27.6.2007, Patrick Proniewski écrivait au sujet de "Re: [#!/fr] Bug declare array bash???" :
>Content-Type: multipart/signed; micalg=sha1; boundary=Apple-Mail-4-632161064;
> protocol="application/pkcs7-signature"
>
>On 27 juin 07, at 15:07, Daniel Varlet wrote:
>
>>Bug avec declare array dans bash???
>>
>>$ declare -a a=( "0" "1 2 3" ); for z in "${a[@]}"; do echo "$z"; done
>>0
>>1
>>2
>>3
>>$ declare -a a; a=( "0" "1 2 3" ); for z in "${a[@]}"; do echo "$z"; done
>>0
>>1 2 3
>>
>>$ bash --version
>>GNU bash, version 2.05b.0(1)-release (powerpc-apple-darwin8.0)
>>Copyright (C) 2002 Free Software Foundation, Inc.
>
>je confirme, les autres versions de bash que j'ai pu tester ne se comportent pas comme ça (3.1.17 freebsd, et 3.2.9 Mac OS X 10.5).
>A priori, le simple a=( "0" "1 2 3" ) se comporte partout pareil, donc cela "élimine" le problème, surtout que le declare est globalement facultatif.
Oui, mais ça fait chic.
Blague à part, c'est censé accélérer le toutim si j'ai pigé quelque chose. (cf. Advanced Bash-Scripting Guide). Mais aucune importance dans mes très rares utilisations d'arrays pour l'instant, et non testé. C'est déjà l'horreur horrible avec les arrays dans bash je ne vais pas y replonger. Sans compter les références indirectes: vivement le ${!a[@]} de la version 3.nn,.
Maintenant, je déclare (declare, local) systématiquement "à vide" avant . Plus pour lisibilité/repère qu'autre chose. C'est vite illisible un code sh.
Quoi Ruby, Perl? etc... ;-)
> Il fallait le trouver celui là :)
C'est lui qui m'a cherché et il m'a trouvé. Et il m'en a fait baver, ce chien. Évidemment.
Merci pour la confirmation.
Pour ce qui est du passage à bash^version>3.nn, on verra pour la compatibilité. Quelques liens de mesures prophylactiques?
A+
--
Daniel
_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr