I denne artikkelen vil vi forklare hvordan du kan erklære og initialisere assosiative matriser i Linux Bash. Vi vil ytterligere utdype kraften til de assosiative matriser ved hjelp av forskjellige eksempler.
Vi har kjørt eksemplene som er nevnt i denne artikkelen på et Debian 10 Buster -system. Imidlertid kan du enkelt gjenskape på nesten alle Linux -distros.
Verifisere forutsetningene
For å bruke assosiative matriser på Linux Bash, må GNU Bash -versjonen være lik eller høyere enn versjon 4. Åpne Linux -terminalen din ved å få tilgang til den via applikasjonslanseringssøket. Skriv deretter inn følgende kommando for å sjekke den installerte versjonen av Bash:
$ Bash -Versjon
Min nåværende bash -versjon er 5.0.3 Så jeg er god til å gå. I tilfelle bash -versjonen din er mindre enn 4, kan du oppgradere bash ved å kjøre følgende kommando som sudo:
$ sudo apt-get install-bare oppgradering bash
Erklærer en assosiativ matrise og initialisere det
Å erklære et assosiativt utvalg er ganske enkelt i bash og kan gjøres gjennom deklar -kommandoen:
$ erklærer -a “ArrayName”
I vårt eksempel vil vi erklære en matrisevariabel med navnet Samplearray1 som følger:
$ erklære -A samplearray1
Neste trinn er å initialisere de nødvendige verdiene for matrisen. I vårt eksempel ønsker vi å ha en rekke der verdier er noen få landsnavn og nøklene er deres relevante landsnavnforkortelser. Her vil vi mate matriseverdiene, en etter en som følger:
$ ArrayName [nøkkel] = verdi
Eksempel:
$ SAMPLEARRAY1 [CHN] = Kina
$ samplearray1 [jpn] = Japan
$ SAMPLEARRAY1 [KOR] = Korea
$ SAMPLEARRAY1 [TWN] = Taiwan
$ SAMPLEARRAY1 [TH] = Thailand
Et raskt alternativ er å erklære og initialisere en matrise i en enkelt base -kommando som følger:
$ DECLARE -A ArrayName = ([Key1] = Value1 [Key2] = Value2 [Key3] = Value3 .. . )
Slik kan vi erklære og initialisere vårt nevnte utvalg, alternativt, som følger:
$ erklære -A SAMPLEARRAY1 = ([CHN] = Kina [JPN] = Japan [Kor] = Korea [TWN] = Taiwan
[Th] = Thailand)
Nå vil vi presentere noen eksempler som vil utdype hva alt du kan gjøre med assosiative matriser i bash:
Eksempel1: Å få tilgang til matriser og verdier
I dette eksemplet vil vi forklare hvordan du kan:
Og,
Skrive ut
Du kan Skriv ut en verdi mot en nøkkel Ved å bruke følgende kommandosyntax:
$ ECHO $ ArrayName [nøkkelnavn]
Slik kan vi få tilgang til et lands fulle navn ved å oppgi landets navnforkortelse, fra vår Samplearray1:
$ ekko $ SampleArray1 [chn]
$ Echo $ SampleArray1 [TWN]
Hvis du er interessert i Skrive ut alle tastene Av din assosiative matrise kan du gjøre det ved å bruke følgende syntaks:
$ for tast i "$ !ArrayName [@] "; gjør ekko $ nøkkel; ferdig
Følgende kommando vil skrive ut alle forkortelser fra landsnavn fra min samplearray1 av
Bruker en for loop:
$ for tast i "$ !samplearray1 [@] "; gjør ekko $ nøkkel; ferdig
Et annet alternativ til å skrive ut alle nøkler fra matrisen er ved å bruke parameterutvidelse. Følgende kommando vil skrive ut alle tastene på samme linje:
$ ekko "$ !samplearray1 [@] "
Hvis du er interessert i Skrive ut alle matriseverdiene på en gang, Du kan gjøre det ved å bruke for -loopen som følger:
$ for val i "$ arrayName [@]"; gjør ekko $ val; Ferdig
Følgende kommando vil skrive ut alle fulle landsnavn som er lagret i min samplearray1:
$ for val i "$ samplearray1 [@]"; gjør ekko $ val; Ferdig
Et annet alternativ til å skrive ut alle verdier fra matrisen er ved å bruke parameterutvidelse. Følgende kommando vil skrive ut alle verdier på samme linje:
$ ekko "$ SampleArray1 [@]"
Det neste nyttige eksemplet vil Skriv ut alle nøkkelverdiparene På en gang ved å bruke for -loopen som følger:
$ for tast i "$ !samplearray1 [@] "; gjør ekko" $ nøkkel er en forkortelse for
$ samplearray1 [$ key] "; ferdig
Du kan selvfølgelig gjøre denne informasjonen henting mer nyttig i dine komplekse og meningsfulle bashskript.
Eksempel 2: Telling av array -elementer
Følgende kommando kan brukes til å telle og skrive ut antall elementer i din assosiative matrise:
$ ekko "$ #arrayName [@]"
Utgangen fra følgende kommando viser at jeg har fem elementer i min Samplearray1:
$ ekko "$ #samplearray1 [@]"
Eksempel 3: Legge til nye data i Array
Hvis du vil legge til et element i en matrise etter at du allerede har erklært og initialisert det, er dette syntaksen du kan følge:
$ ArrayName+= ([nøkkel] = verdi)
I mitt eksempel vil jeg legge til et annet land sammen med forkortelsen til fylkets navn, så jeg vil bruke følgende kommando:
$ samplearray1+= ([al] = alabama)
Å gjenspeile matriseverdiene antyder nå at det nye landet blir lagt til i matrisen min:
$ ekko "$ SampleArray1 [@]"
Eksempel 4: Slette element fra Array
Ved å fjerne en oppføring fra Associative Array, kan du slette den som et matriseelement. Dette er uset syntaksbruk kan bruke for å gjøre det:
$ unset arrayName [nøkkel]
I mitt eksempel vil jeg fjerne nøkkelverdi-paret "Al-Alabama" fra mitt utvalg, så jeg vil ikke ta opp "AL" -tasten i kommandoen min:
$ unset samplearray1 [al]
Å gjenspeile matriseverdiene antyder nå at al-Alabama-nøkkelverdien nå er fjernet fra min matrise:
$ ekko "$ SampleArray1 [@]"
Eksempel 5: Bekreftelse om det finnes en vare i matrisen
Ved å bruke IF -tilstanden på følgende måte, kan du bekrefte om et element er tilgjengelig i din assosiative matrise eller nå:
$ if [$ arrayName [searchKey]+_]; da eksisterer ekko "; ellers ekko "ikke tilgjengelig"; fi
Hvis jeg for eksempel sjekker om det nylig slettede al-Alabama-varen finnes i min matrise, vil følgende melding skrives ut:
$ if [$ samplearray1 [al]+_]; da eksisterer ekko "; ellers ekko "ikke tilgjengelig"; fi
Hvis jeg ser etter et element som eksisterer, vil følgende resultat bli skrevet ut:
$ if [$ samplearray1 [jpn]+_]; da eksisterer ekko "; ellers ekko "ikke tilgjengelig"; fi
Eksempel 6: Slette en matrise
Du kan slette et assosiativt utvalg fra Bash -minnet ved å bruke UNSET -kommandoen som følger:
$ unset arrayname
Ved å bruke følgende enkle kommando, vil jeg slette min samplearray1 fra minnet:
$ unset samplearray1
Nå, når jeg prøver å skrive ut alle matriseverdiene gjennom følgende kommando, får jeg ingen.
$ ekko "$ SampleArray1 [@]"
Ved å bruke disse eksemplene i Linux Bash -skriptene dine, kan du bruke kraften til de assosiative matriser for å oppnå en løsning på mange komplekse problemer.