Je veux utiliser read cmd depuis un moment qui lit ligne par ligne à partir d'un fichier, mais j'ai un problème dans la ligne 4 de ce script:
while read a
do
echo before
read var
echo after
done < file1
le résultat est :
before
after.
Pouvez-vous m'aider à résoudre ce problème?
Réponses:
3 pour la réponse № 1Un descripteur de fichier ne peut en réalité pointer que vers un fichier à la fois. Chaque invocation de read
vous avez là des lectures d’entrée standard, y compris celle du milieu. Si tu veux read
de quelque chose d'autre, vous devez dire read
d'utiliser un autre descripteur de fichier.
exec 5< file1 # assign file1 to the file descriptor number 5.
# ("open for reading" as it were)
while read <&5 a; do # read from fd5
echo before
read var # read from fd0
echo after
done
exec 5<&- # Reset fd 5 ("close the file" as it were)
Vous pouvez aussi utiliser read -u 5
lire à partir d'un descripteur spécifique en bash.