Probleme boucle while en ksh

bong26 Messages postés 7 Statut Membre -  
 Utilisateur anonyme -
Bonjour à tous,
Je contacte le forum car je suis face à un mystère incroyable je ne comprends rien
donc: le but du jeu est de lire un fichier avec plusieures lignes classique
fichier cat fichier.TXT:
TOTO
TITI
TATA
DODO
j'ai fais un script en ksh :

##################################KSH#######
#!/bin/ksh

# je me positionne dans le directory
# je demande de lire le fichier en parametre fichier.TXT

cd /app/jnd/cells/Cell_RLE-Production_std/SCRIPT_UTILE
echo -e " veuillez rentrer le fichier CSV: \n"

read FIC

cat /app/jnd/cells/Cell_RLE-Production_std/SCRIPT_UTILE/fichier_traitement | grep -i "^[A-Z]*" |while read line

do
VAR1=`echo "$line" |grep -i '^[A-Z]*'`

jndProjectCtl.sh --project $VAR1 --all-instances status >> compte-rendu.TXT
sleep 10

done

comportement du script :

il traite que 2 lignes dans le fichier le reste il ne reconnait pas
je comprends rien tout me semble ok pourtant

si vous avez une idée ça serait cool

merci d'avance

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    des caractères spéciaux dans le fichier, est-ce un fichier Windows ?
    cat -A fichier
    0
  2. Utilisateur anonyme
     
    salut,

    pourquoi utiliser ksh, plutôt qu'un script sh ?
    je ne vois dans ton script aucun "kshisme".

    il faut être cohérent.
    #!/bin/sh

    #cd /app/jnd/cells/Cell_RLE-Production_std/SCRIPT_UTILE #inutile : il est rare qu'il soit utile de changer de répertoire dans un script.

    echo -e " veuillez rentrer le fichier CSV: \n"
    read FIC
    # il faut tester si $FIC existe, est un fichier, et est en lecture

    # UUOC !
    # cat /app/jnd/cells/Cell_RLE-Production_std/SCRIPT_UTILE/fichier_traitement | grep -i "^[A-Z]*" |while read line

    grep -i '^[A-Z]*' /app/jnd/cells/Cell_RLE-Production_std/SCRIPT_UTILE/"$FIC" \
    | while read line
    do
    # VAR1=`echo "$line" |grep -i '^[A-Z]*'` # inutile : le grep précédent a déjà sélectionné ces lignes
    # jndProjectCtl.sh --project $VAR1 --all-instances status >> compte-rendu.TXT
    echo jndProjectCtl.sh --project "$line" --all-instances status >> compte-rendu.TXT
    echo sleep 10
    done
    0