Mercredi 15 juin 2005, 16:12:13 CEST, Fr�d�ric BOITEUX a �crit :
>
> Le Wed, 15 Jun 2005 09:34:16 -0400, Richard Lemay <[EMAIL PROTECTED]>
> a �crit :
>
> > J'ai fais un peu de lecture et j'ai construit le script suivant qui
> > fonctionne bien:
> >
> >
> > #!/bin/sh
> > case "$1" in
> >
> > "") /home/apps/acrobat-reader/bin/acroread
> > ;;
> >
> > *) /home/apps/acrobat-reader/bin/acroread "$1"
> > ;;
> >
> > esac
>
> Oui, mais si tu as plusieurs fichiers en arguments ?
>
> > Sauf que cette commande (acroread ${1+"$@"} m'intrigue. Elle semble
> > faire exactement ce que je veux en une ligne. Je vais devoir trouver
> > de la documentation pour me l'expliquer :).
>
> Elle fait je crois exactement ce que tu veux, mais c'est assez
> illisible. C'est une formule "connue" que j'avais p�ch� dans un script,
> et que je garde sous le coude. Mais je n'en ai pas vu d'explication
> dans la page manuel de 'bash'...
Mais si on la trouve, dans la section � EXPANSION �, sous-section
� remplacement des param�tres �. (En anglais : EXPANSION/Parameter
expansion.)
Voil� un r�sum� :
${1+"$@"} = si $1 n'existe pas, on ne met rien, sinon on met "$@"
($@ = tous les arguments, les guillemets permettent de prot�ger les
arguments un par un (c'est comme si on �crivait "$1" "$2" ...)).
(� noter que, normalement, c'est ${1:+"$@"}.)
En g�n�ral, "$@" me suffit. Je ne me souviens pas avoir eu de probl�me
s'il n'y avait pas du tout d'argument.
La gestion des guillemets est toujours assez... amusante... � comprendre.
for f in *.txt; do cat $f; done
for f in "*.txt"; do cat $f; done
for f in *.txt; do cat "$f"; done
for f in "*.txt"; do cat "$f"; done
Et si on y ajoute les ''... ;oP
--
Sylvain Sauvage