[gull] truc et astuce: Utiliser des array de 1 element pour encadrer les boucles

Daniel Cordey dc at mjt.ch
Tue Mar 2 10:01:02 CET 2004


On Monday 01 March 2004 18.42, Félix Hauri wrote:

Petit complement.

> En effet la commande
> $ echo $UneVariableNonDefinie
> ne répondra rien, de plus le code de retour sera 0 (Ok).

Je ne saurais recommander l'usage des {} de maniere systematique. Ceci evite 
bien des ambiguites. Par exemple :

$ myvariable=file
$ echo $myvariable23

$ echo ${myvariable}23
file23

En effet, dan sle premier echo, le shell considere 'myvariable23' comme un 
symbole. 

> En effet, le shell s'accomode très bien de l'inexistance d'une variable, à
> tel point que le test ``[ $i -gt 0 ]'' générera une erreure si $i n'est
> pas défini.

Oui, c'est bien le comportement par defaut, en l'absence de l'option -u qui 
elle engendre une erreur pour tout usage de variable indefinie.

$ set -u

On peut aussi eviter ce genre d'erreur dans les tests (assez enervant !) en 
ecrivant :

[ "${i}" -gt 0 ]

La, ce ne sont pas les accolades qui evitent le probleme, mais l'usage des 
guillemets ("). Ainsi, si 'i' ne contient rien, nous aurons quand meme une 
valuer 'vide' existante qui poura etre comparee.




More information about the gull mailing list