Probleme boucle while en ksh

Fermé
bong26 Messages postés 7 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 1 octobre 2017 - 22 août 2017 à 12:33
 Utilisateur anonyme - 24 août 2017 à 11:46
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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
23 août 2017 à 13:18
hello
des caractères spéciaux dans le fichier, est-ce un fichier Windows ?
cat -A fichier
0
Utilisateur anonyme
24 août 2017 à 11:46
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