erreur dans boucle while

bayrouni bayrouni at brutele.be
Tue Dec 18 13:01:35 CET 2007


Clément Hermann wrote:
> bayrouni a écrit :
>   
>> Sur la ligne de commande dans un terminal, j'execute:
>> i=0; infostr=(); while read line; do infostr[i++]="$line"; echo "$line";
>> done < <(cddb.pl -I cddb query $(cd-discid /dev/cdrom)); echo
>> "${infostr[0]}"
>> Celà m'affiche 16 lignes contenant des informations sur mon cd audio,
>> dont notemment les titres (les chansons)
>>
>> category: misc
>> cddbid: bd0c0f10
>> trackno: 16
>> track 1: Les Flamands
>> track 2: La Valse A Milie Temps
>> track 3: Jacky
>> track 4: La Chanson Des Vieux Amants
>> track 5: Ne Me Quitte Pas
>> etc ...
>> track 16: Le Moribond
>>
>> Le problème apparaît à partir du moment ou je mets ce code dans un
>> script bash que j'appelle cdripper.sh,
>> j'ai alors cette erreur:
>> cdripper.sh: line 56: syntax error near unexpected token `<'
>> cdripper.sh: line 56: ` while read line; do infostr[i++]="$line"; echo
>> "$line"; done < <(cddb.pl -I cddb query $(cd-discid /dev/cdrom)); echo
>> "${infostr[0]}"'
>>
>>   
>>     
> Drôle de syntaxe... j'avais jamais rencontré <(commande) auparavant.
> D'ailleurs on dirait bien que c'est ça qui ne lui plait pas ! ;)
>
> À ma connaissance, < et > ne fonctionnent que pour les fichiers en bash.
> Si tu veux récupérer la sortie d'une commande dans un while, utilise un
> pipe :
>
> commande | while read line; do
> code
> done
>
>
>   
cette commande marche syntaxiquement correctement,
mais en bash, il y a un subterfuge qui permet de récuperer les varibles 
dans la boucles en dehors de celle-ci.
Parce que si j'ai bien compris, dans une boucle,  bash crée un nouveau 
(sous)shell.
>> J'utilise GNU bash, version 3.2.25(1)-release (x86_64-unknown-linux-gnu)
>>
>> Le but est de mettre chaque ligne retourné par cddb.pl -I cddb query
>> $(cd-discid /dev/cdrom)  dans un élément du tableau infostr en dehors de
>> la boucle (après la boucle)
>> (encodage ogg avec des tags).
>>
>> Bien entendu, il y a des logiciels super beaux et super facils pour
>> faire cette tâche, mais comme vous l'aurez compris, ce n'est pas mon but.
>>
>> Je vous remercie d'avoir été patient et de m'avoir lu jusqu'à la fin
>> pour une question de bash .
>> en fait j'ai lu la definition que vous donnez au bash  dans le wiki  :)
>>
>>   
>>     
> Celle là : http://cli.asyd.net/home/shell/bash ?
>
> Non parce que si il y en a une autre, en tant que vieil irréductible du
> bash refusant de passer à zsh pour des tas de raisons (et même quelques
> bonnes dans le tas, sisi), ça m'intéresse ;)
>
>   



More information about the Shell mailing list