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"
mapfile
En 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.