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.Spar dig selv for besvær og kom igennem din to-do liste i dag
1
Beskriv din opgave
2
Modtag bud
3
Få løst din opgave
Møbelsamling
Hjælp med at samle Ikea klædeskab
Maler
Klargøring af lejlighed til flyttesyn
Flyttehjælp
Flytning af 150 kvm hus til Roskilde fra København
Havearbejde
Beskæring af 4 større træer
IT support
Geninstallering af windows + programmer
Elektriker
Installation af Sonos musikanlæg i hus
Rengøring
Ugentlig rengøring af lejlighed (114kvm)
Flyttehjælp
Flytning af 150 kvm hus til Roskilde fra København
Elektriker
Opsætning af lamper i stue og soveværelse
Catering
3-retters menu til 14 mennesker