Input från fil

Ibland vill vi ju använda en fil istället. I exemplet nedan har vi en fil med en massa bilmärken, listade en per rad. Filen kan du hitta i exempelmappen.

filename="cars.txt"
re="^[C-E].*$"
IFS=$'\n'

for car in $(< "$filename"); do
    [[ $car =~ $re ]] && echo "$car"
done

Ovan matchar vi de bilar som börjar på C, D eller E. Då bilarna kan ha namn separerade med space sätter vi IFS till endast nyrad.

För att slippa ändraIFS fär hela omgivningen kan vi strukturera om koden så vi endast ändrar IFS för read kommandot:

filename="cars.txt"
re="^[C-E].*$"

while IFS=$'\n' read -r car; do
    [[ $car =~ $re ]] && echo "$car"
done < $filename

#Revision history

  • 2020-05-12: (A, lew) Första versionen.

Document source.