Sådan Itererer Du Korrekt Over Linjer i Bash: Variabler og Kommando Output

Hvordan itereres korrekt over linjer i bash, enten i en variabel eller fra output af en kommando? At sætte IFS-variablen til en ny linje virker for output af en kommando, men ikke når man behandler en variabel, der indeholder nye linjer.

Præmissen om korrekt iteration over linjer i bash kan håndteres ved at bruge en while-løkke med IFS= read -r for både kommandooutput og variabler, eller ved at anvende mapfile til at læse linjer ind i et array.

Hvordan itereres korrekt over linjer i bash, enten i en variabel eller fra output af en kommando?

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:

Iterere over output fra en kommando

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"

Iterere over en variabel med nye linjer

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"

Alternativ metode ved brug af 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

Opsummering

  • Brug en while-løkke med IFS= read -r for at iterere over output fra en kommando.
  • Brug en while-løkke med IFS= read -r for at iterere over en variabel med nye linjer.
  • Overvej at bruge mapfile til at læse linjer ind i et array og iterere over arrayet.

Opret din første opgave på få minutter

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

opgaver platform services

Møbelsamling

Hjælp med at samle Ikea klædeskab

opgaver platform services

Maler

Klargøring af lejlighed til flyttesyn

opgaver platform services

Flyttehjælp

Flytning af 150 kvm hus til Roskilde fra København

opgaver platform services

Havearbejde

Beskæring af 4 større træer

opgaver platform services

IT support

Geninstallering af windows + programmer

opgaver platform services

Elektriker

Installation af Sonos musikanlæg i hus

opgaver platform services

Rengøring

Ugentlig rengøring af lejlighed (114kvm)

opgaver platform services

Flyttehjælp

Flytning af 150 kvm hus til Roskilde fra København

opgaver platform services

Elektriker

Opsætning af lamper i stue og soveværelse

opgaver platform services

Catering

3-retters menu til 14 mennesker