/ / Comment lire en lisant un fichier sous bash - bash, shell, sh

Comment lire en lisant un fichier dans bash - bash, shell, sh

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 № 1

Un 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.