erreur dans boucle while

Clément Hermann clement.hermann at businessdecision.com
Mon Dec 17 00:18:03 CET 2007


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


> 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 ;)

-- 
Clément Hermann (nodens)


More information about the Shell mailing list