Nieuws:

Ubuntu-NL weer online!

Na een periode van technische problemen en een overbelaste server zijn we eindelijk weer bereikbaar.
Samen met Hobbynet, onze sponsor en hostingpartner, hebben we een oplossing gevonden zodat alles weer soepel draait.

Bedankt voor jullie geduld en begrip. We hopen nu weer verder te gaan waar we gebleven waren.

Het team van Ubuntu-NL

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: bash script met array  (gelezen 2875 keer)

Offline elifafd

  • Lid
bash script met array
« Gepost op: 2010/01/30, 21:14:17 »
Hallo,

Ben een newbie hier.

Ben bezig met een scriptje om een xml file uit te lezen.

XML file bestaat uit x aantal variabelen die in de xml file meerdere keren voorkomen.

Nu heb ik diverse variabelen die uit 1 tekst bestaan maar ook variabelen die uit meerdere woorden bestaan bijvoorbeeld "Oude Gracht 12"

Wat heb ik tot nu toe

ik lees de xml file uit aan de hand van de variabele

adres=`awk '/<afl_var_adres>/ {stp=index($0,">")+1; \
newstr=substr($0,stp); \
etp=index(newstr,"<")-1; \
print substr(newstr,0,etp); \
}' $xmlfile`

ik plaats deze vervolgens in een array

L_ARRAY=( `echo ${adres}` )

Nu dacht ik dat ik dmv onderstaand commando de volledige tekst regel te krijgen echter..... ik krijg alleen het 2e woord

echo ${K_ARRAY[2]}

Is er een mogelijkheid om toch die volledige regel (bijvoorbeeld "Oude Gracht 12") in 1 zo'n Array locatie te krijgen

Dus:

echo ${K_ARRAY[2]}

geeft dan: Oude Gracht 12

Ik hoor graag jullie suggesties.

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: bash script met array
« Reactie #1 Gepost op: 2010/01/31, 14:38:24 »
Wat doet echo ${K_ARRAY[1]} ?
Of wat doet echo ${K_ARRAY} ?
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline elifafd

  • Lid
Re: bash script met array
« Reactie #2 Gepost op: 2010/01/31, 23:03:31 »
Problem is opgelost

op een iets andere manier

while IFS='<>' read _ starttag value endtag; do
    case "$starttag" in
        afl_var_locatie) Locatie+=("$value") ;;
        afl_var_adres)   Adres1+=("$value");;
    esac
done < $xmlfile