Mahlzeit!
Analog zu Deinem Code ginge das so:
#+v
cat $FILE | (
read ZEILE1
read ZEILE2
read ZEILE3
echo 'erstens: '$ZEILE1', zweitens: '$ZEILE2' und drittens: '$ZEILE3
)
#-v
Ob das so sinnvoll ist (die Variablen sind z.B. nur in der Subshell
definiert und Du kannst nicht ohne weiteres über beliebig viele Zeilen
iterieren), kann ich nicht beurteilen, weil ich nicht weiß, was Du
eigentlich tun willst.
Ggf. geht es mit Arrays einfacher. Wann Du das, wie von Marcel
beschrieben, in einer bash machst, kannst Du das Array am Stück
einlesen und brauchst dafür keine Schleife zu bauen. Außerdem kommst
Du um die Subshell drumherum und die Array-Variable steht Dir im
Haupt-Skript zur Verfügung:
#+v
mapfile ZEILE < $FILE
echo 'erstens: '${ZEILE[0]}', zweitens: '${ZEILE[1]}' und drittens: '${ZEILE[2]}
#-v
Obacht, der Index des Arrays fängt (wie üblich) bei 0 an zu zählen.
Das könntest Du aber mit dem Parameter -O bei mapfile ändern.
Gruß
Christian
PS: Ein paar Anmerkungen zu Deinem Code:
1. statt "cat $FILE | ()" könntest Du "() < $FILE" benutzen, das spart
einen unnötigen Aufruf von cat
2. read sollte immer mit -r aufgerufen werden
3. das Quoting beim echo lässt sich vereinfachen zu
echo "erstens: $ZEILE1, zweitens: $ZEILE2 und drittens: $ZEILE3"
--
....Christian.Garbs....................................
https://www.cgarbs.de
Die vorsorgliche Hausfrau hat immer eine leere Flasche im Kühlschrank.
Es könnte ja Besuch kommen, der nichts trinken will.