[SSFR] Re: [SSFR] Re: [SSFR] [zsh] role guillemets doubles dans les expansions ? |
[ Thread Index |
Date Index
| More debianworld.org/shellscript-fr Archives
]
On 2005-06-13 11:15:19 -0000, Bruno Bonfils wrote:
> Le lun 13 juin, marc chantreux a écrit :
> > % cat comprendre
> > this
> > is
> > a
> > test
> >
> > % foreach l ( ${(f)"$(< comprendre )"} ) { print $l }
> > this
> > is
> > a
> > test
> >
> > % foreach l ( ${(f)$(< comprendre )} ) { print $l }
>
> Je pense qu'il te manque un « this is a test » en resultant a cette
> boucle,
Oui.
> quoiqu'il en soit, pourquoi tu n'utilise pas tout simplement :
>
> % foreach l ( ${$(< comprendre )} ) { print $l }
> this
> is
> a
> test
Tout dépend de ce qu'on veut. La page man zshexpn(1) donne quelques
explications:
Examples
The flag f is useful to split a double-quoted substitution
line by line. For example, ${(f)"$(<file)"} substitutes the
contents of file divided so that each line is an element of
the resulting array. Compare this with the effect of
$(<file) alone, which divides the file up by words, or the
same inside double quotes, which makes the entire content of
the file a single string.
Pour foreach l ( ${(f)$(< comprendre )} ) { print $l }, je suppose
que le (f) a pour premier effet de transformer le tableau en chaîne
comme avec:
foreach l ( ${(j: :)$(< comprendre )} ) { print $l }
Du coup, il n'y a qu'une seule ligne.
D'autre part, je conseillerais de quoter le $l en "$l" au cas où.
Je ne sais pas s'il peut y avoir une différence ici, mais je pense
que c'est une bonne habitude à prendre (notamment dans un contexte
de compatibilité sh).
--
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA