At iterere over linjer i bash kan gøres på flere måder, afhængigt af om du arbejder med output fra en kommando eller en variabel, der indeholder nye linjer. Her er nogle metoder til at gøre dette korrekt:
For at iterere over output fra en kommando kan du bruge en while-løkke sammen med read. Dette sikrer, at hver linje behandles korrekt.
command_output=$(some_command)
while IFS= read -r line; do
echo "$line"
done <<< "$command_output"
Når du arbejder med en variabel, der indeholder nye linjer, kan du bruge en while-løkke med read og her er det vigtigt at bruge IFS korrekt.
variable="line1
line2
line3"
while IFS= read -r line; do
echo "$line"
done <<< "$variable"
mapfileEn anden metode til at iterere over linjer i en variabel er at bruge mapfile (eller readarray), som læser linjerne ind i et array.
variable="line1
line2
line3"
mapfile -t lines <<< "$variable"
for line in "${lines[@]}"; do
echo "$line"
done
while-løkke med IFS= read -r for at iterere over output fra en kommando.while-løkke med IFS= read -r for at iterere over en variabel med nye linjer.mapfile til at læse linjer ind i et array og iterere over arrayet.