> cat ${FAXLIST} | while read line # read file line by line
> do
> NBRLIST[$i]=`echo $line | cut -d"|" -f1 ` # extract numéro fax
>destinataire (obligatoire)
> NAMEDEST[$i]=`echo $line | cut -d"|" -f2 ` # nom destinataire
>(facultatif)
> i=$(($i+1))
> echo $i
> echo ${NBRLIST[@]}
> done
cmd1 | cmd2 : les deux commandes sont exécutées dans deux interpréteurs
(donc processus) différents, dont les environnements sont étanches ; si un
interpréteur modifie son environnement, l'autre n'en sera pas informé.
Quand 'cmd1' est 'cat file', on peut -- et on doit, car cela économise un
processus -- transformer la ligne de commande en 'cmd2 <file'. Dans ton cas :
while IFS=\| read nombre nom ; do
NBLIST[$i]=$nombre # si on doit absolument utiliser des tableaux
NAMEDEST[$i]=$nom
((i++))
...
done <$FAXLIST # les accolades sont inutiles, sinon il faut écrire ${line}
NBLIST[], NAMEDEST[], i sont visibles après la boucle car elle a été
exécutée dans le contexte de l'interpréteur en charge du script.
-N. Tripon