On Fri, Oct 01, 2004 at 08:48:12AM +0200, Daniel Cordey wrote:
> On Thursday 30 September 2004 22:55, F�lix Hauri wrote:
> 
> > Alors pour cela, je recommande le ``set --'' et le ``shift'':
> 
> Ca depend pourquoi tu le recommandes. Pour la lisibilite du code, ...
Plus pour la souplesse, en fait... mait tout se discute!
(Sinon ce ne serait pas une liste de discussions ;-)

> j'en reste a 'while' qui me permet d'ecrire :
> 
> x=${IFS}; IFS=':'
> grep ${USER} /etc/passwd |\
> while read name psswd uid gid dummy desc home shell
> do
>     echo "Your login name is : ${name}\nYour shell is : ${shell}"
> done
> IFS=${x}
Ok, mais l� tu g�n�re un fork en dehors duquel tes variables n'existent plus!
(Ou ne sont pas mises � jour)

De plus la boucle ``while ...;do ... ;done'' pour 1 it�ration peut �tre �vit�e
avec des parenth�ses, mais de toutes fa�ons: fork. :-/

$ name="dumy init"
    x=${IFS}
    IFS=$'\t:'
    grep ${USER} /etc/passwd | (
        read name dummy uid gid line
        echo -e "Your login name is : ${name}\nYour config line is : ${line}"
    )
Your login name is : felix
Your config line is : F�lix Hauri,,,:/divan/userland/felix:/bin/bash

$ echo "name after fork is:'${name}'"
name after fork is:'dumy init'

$ IFS=${x}

> Je pense a ceux qui debutent sous Linux et dans le shell.
Cela aussi peut d�router des d�butants:
  Ou est pass� ma variable! :-<

(Au passage, regarder IFS=$'\t:' et pas seulement IFS=':',
 c'est pour une  conversion automatique, ci dessous... )

Alors que:

$ x=${IFS}
    mgid="dumy init"
    IFS=$'\t:'
    set -- $(grep $USER /etc/passwd)
    shift;shift
    muid=$1;shift
    mgid=$1;shift
    line=$*
    printf "uid=%s\ngid=%s\nconfig=%s\n" "$muid" "$mgid" "$line"
    IFS=${x}
uid=12345
gid=10987
config=F�lix Hauri,,,   /divan/userland/felix     /bin/bash

Il n'y a pas de fork, mes variables sont bien l�.
(De plus, les ``:'' ont �t� convertis en tabulations au passage ;)

$ echo "Variame name: '$name' et mgid: '$mgid'"
Variame name: 'dumy init' et mgid: '10987'

> Comme ca au matin, shift, set, ... ca doit les surprendre :-)
D�sol� ;)

Bonne journ�e!

$ man bash | wc 
(Ou bonne nuit � ceux qui d�cideront apr�s cette derni�re
  commande de retourner dormir un coup;)

-- 
 F�lix Hauri  -  <[EMAIL PROTECTED]>  -  http://www.f-hauri.ch
_______________________________________________
gull mailing list
[EMAIL PROTECTED]
http://lists.alphanet.ch/mailman/listinfo/gull

Répondre à