Re: aide bash

Page principale

Répondre à ce message
Auteur: nt.guilde
Date:  
CC: guilde
Sujet: Re: aide bash
> 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