SHELL: read
Résolu
tlep
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
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 ? :-((
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 ? :-((
A voir également:
- Read -p shell
- Classic shell - Télécharger - Personnalisation
- Classic shell c'est quoi ✓ - Forum Windows 10
- Mkdir - p signification ✓ - Forum Linux / Unix
- Classic shell est il sain? ✓ - Forum Windows 8 / 8.1
- A disk read error occurred ✓ - Forum Windows
3 réponses
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 :
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;-))
if [ "'read -e'" = "Bonjour" ] then echo oui fi
warning : simple-quotes are back-quotes
is like :
read line; if [ "$line" = "Bonjour" ] then echo oui fi
as-tu testé cette proposition afin de la valider ? (si je pouvais moinsser davantage ...)
pour répondre à la question initiale, avec 7 ans de retard :
pour répondre à la question initiale, avec 7 ans de retard :
while read -r line <&3le contenu du fichier est redirigé vers un descripteur de fichier supplémentaire, ainsi le
do
echo "afficher la ligne ? \"oui\" ou \"non\""
read reponse
test "$reponse" = "oui" && echo "$line"
done 3<monFichier
stdinde la boucle
whiledemeure libre pour d'autres
read.