Posez votre question Signaler

SHELL: read [Résolu]

tlep 591Messages postés 21 février 2002Date d'inscription - Dernière réponse le 10 oct. 2007 à 14:09
Bonjour,
j'ai un souci avec 2 read en boucle dans un shell :
#!/bin/bash
L=1
while read ligne;do
while true;do
clear
echo "Supprimer \"$ligne\" ?"
reponse=""
read reponse
if [ "$reponse" = "o" ];then
sed -i $L'd' $1
break
elif [ "$reponse" != "" ];then
L=$(($L+1))
break
fi
done
done < mon_fichier
Je veux afficher chaque ligne pour en demander la suppression.
Bizarrement, la variable "$reponse" prend la valeur de "$ligne".
Très étrange non ? :-((
Lire la suite 

SHELL: read »

2 réponses
Réponse
+1
moins plus
Salut,

C'est le double "read" qui met la pagaille je pense (enfin j'en suis même sûr, mais je sais pas pourquoi :-\ ).

Donc au lieu de passer par une boucle "while", essaie plutôt avec une boucle "for" en modifiant la variable "$IFS", du style :
L=1
IFS=$'\n'
for ligne in $(cat $1)
do
echo "Affichage ligne $L ?"
read -e reponse
if [ "$reponse" = "o" ]
then
echo $ligne
fi
L=$(expr $L + 1)
done
;-))
Ajouter un commentaire
Réponse
+0
moins plus
J'y avais bien pensé mais j'imaginais que ce comportement était explicable;

merci ;
Ajouter un commentaire
Ce document intitulé « SHELL: read » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook