J'ai un fichier qui contient des informations dans deux colonnes:
box1 a1
box2 a2
J'essaie de lire ce fichier ligne par ligne dans read
et de placer chaque élément de ligne dans une variable.
Au premier passage, $a
contiendrait box1
et $b
contiendrait a1
.
Au deuxième passage, $a
contiendrait box2
et $b
contiendrait a2
, etc.
Un exemple du code que j'utilise pour essayer de réaliser est le suivant:
for i in text.txt; do
while read line; do
echo $line | read a b;
done < text.txt;
echo $a $b;
done
Cela me donne les résultats suivants:
box1 a1 box2 a2
Quand je m'attendais aux résultats suivants:
box1 a1
box2 a1
Comment puis-je réparer cela?
L'ajout d'une commande read
entraîne la définition des variables dans un sous-shell, ce qui les rend inaccessibles (en fait, elles ont disparu) au reste de votre code. Dans ce cas, cependant, vous n'avez même pas besoin de la boucle for
ou de la deuxième commande read
:
while read -r a b; do
echo "$a" "$b"
done < text.txt