Assosiativt utvalg i bash

Assosiativt utvalg i bash

En matrisevariabel brukes til å lagre flere data med indeks, og verdien av hvert matriseelement får tilgang til den tilsvarende indeksverdien til det elementet. Arrayen som kan lagre strengverdi som en indeks eller nøkkel, kalles assosiativ matrise. Et assosiativt utvalg kan deklareres og brukes i bashskript som andre programmeringsspråk. Denne funksjonen er lagt til i bash 4. Hvordan assosiativ rekke.

Sjekk den nåværende versjonen av bash før du starter neste del av denne opplæringen. Kjør følgende kommando fra terminalen for å sjekke den installerte versjonen av bash. Hvis den installerte bash -versjonen i operativsystemet ditt er mindre enn 4, må du først installere bash -versjonen 4 for å fortsette denne opplæringen.

$ Bash -Versjon

Følgende utgang viser at den nåværende versjonen av bash er 4.4.19.

Erklære og initialisere assosiativ matrise:

En assosiativ matrise kan deklareres i bash ved å bruke erklære Nøkkelord og matriseelementene kan initialiseres på tidspunktet for array -erklæringen eller etter å ha erklært matrisevariabelen. Følgende skript vil lage et assosiativt utvalg som heter Assarray1 og de fire matriseverdiene initialiseres individuelt.

$ erklære -A ASSARRAY1
$ ASSARRAY1 [frukt] = mango
$ ASSARRAY1 [BIRD] = COCKATAIL
$ ASSARRAY1 [blomst] = rose
$ ASSARRAY1 [Animal] = Tiger

Produksjon

Følgende skript vil initialisere det assosiative matrisen, Assarrat2 På tidspunktet for Array -erklæringen. Her er tre arrayverdier med nøkler definert på tidspunktet for array -erklæringen.

$ DECLARE -A ASSARRAY2 = ([HDD] = Samsung [Monitor] = Dell [tastatur] = A4Tech)

Produksjon:

Få tilgang til det assosiative matrisen:

Array -elementer av et assosiativt utvalg kan nås individuelt eller ved å bruke en hvilken som helst sløyfe. Disse to måtene vises i denne delen av opplæringen. Array -nøkler og verdier kan skrives ut separat og sammen.

Følgende kommandoer vil skrive ut to verdier av matrisen, Assarray1 (erklært tidligere) ved å spesifisere nøkkelverdien.

$ Echo $ Assarray1 [Bird]
$ ekko $ assarray1 [blomst]

Produksjon:

Følgende utgang vises etter å ha kjørt kommandoene ovenfor.

Noen ganger er det påkrevd å skrive ut alle tastene eller alle verdiene på matrisen. Alle tastene til en matrise kan skrives ut ved å bruke løkke- eller baseparameterutvidelse. Følgende første kommando vil skrive ut alle tastene til matrisen i hver linje ved å bruke for Loop, og den andre kommandoen vil skrive ut alle array -tastene i en linje ved å bruke Bash -parameterutvidelse. Her, '!'Symbol brukes til å lese nøklene til den assosiative matrisen.

$ for tast i "$ !assarray1 [@] "; gjør ekko $ nøkkel; ferdig
$ ekko "$ !Assarray1 [@] "

Produksjon:

Følgende utgang vises etter å ha kjørt kommandoene ovenfor.

Alle verdier av en matrise kan skrives ut ved å bruke løkke- eller baseparameterutvidelse. Følgende første kommando vil skrive ut alle verdiene på matrisen i hver linje ved å bruke for Loop, og den andre kommandoen vil skrive ut alle arrayverdier i en linje ved å bruke Bash -parameterutvidelse.

$ for val i "$ assarray1 [@]"; gjør ekko $ val; Ferdig
$ ekko "$ Assarray1 [@]"

Produksjon:

Følgende utgang vises etter å ha kjørt kommandoene ovenfor.

Både nøkler og verdier av et assosiativt utvalg kan skrives ut ved å bruke for loop. Følgende skript vil skrive ut alle verdier med nøkler fra den assosiative arrayen som er navngitt Assarray1. Her blir hver tast i matrisen analysert i hvert trinn i for -loopen, og nøkkelen brukes som indeksen for matrisen for å lese verdien av den tilsvarende tasten.

$ for tast i "$ !Assarray1 [@] "; do Echo" $ Key => $ Assarray1 [$ Key] "; Done

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet.

Legge til nye data i assosiativ matrise:

Et nytt matriseelement kan enkelt legges til i det assosiative matrisen etter å ha erklært og initialisert matrisen. Følgende kommandoer vil sjekke gjeldende matriseverdier for matrisen, Assarray2, Legg til en ny verdi, “Logitech”Med nøkkelen,”Mus”Og sjekk igjen gjeldende elementer i matrisen.

$ ekko "$ assarray2 [@]"
$ assarray2+= ([mus] = logitech)
$ ekko "$ assarray2 [@]"

Produksjon:

Følgende utgang vises etter å ha kjørt kommandoene.

Slette data fra assosiativ matrise:

Enhver elementverdi av det assosiative matrisen kan fjernes basert på nøkkelverdien. 'Unset' -kommando brukes til å slette den spesielle verdien av det assosiative matrisen. Følgende kommandoer brukes Kontroller gjeldende verdi på matrisen med nøkkelen, "Observere”, Slett verdien ved å bruke usettkommando og kjør igjen 'Echo' -kommandoen for å sjekke verdien er slettet eller ikke. $ Echo $ Assarray2 [Monitor]

$ unset Assarray2 [Monitor]
$ Echo $ Assarray2 [Monitor]

Produksjon:

Følgende utgang vises etter å ha kjørt kommandoene.

Finne manglende indeks fra assosiativ matrise:

Manglende indeks eller nøkkel i en matrise finner du ved å bruke en betinget uttalelse. Følgende skript vil sjekke matrise -tasten, “Observere" eksisterer eller ikke. Verdien av denne nøkkelen fjernes i forrige eksempel. Så "hvis" -tilstanden vil returnere falsk og "ikke funnet" -meldingen vil bli skrevet ut.

$ if [$ Assarray2 [Monitor]+_]; da ekko "funnet"; ellers ekko "ikke funnet"; fi

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet.

Fjerne assosiativ matrise:

Enhver assosiativ rekke. Følgende første kommando vil skrive ut alle verdier av arrayen som er navngitt Assarray1 i en enkelt linje hvis matrisen eksisterer. Den andre kommandoen vil fjerne matrisen. Den tredje kommandoen brukes til å sjekke matrisen eller fjernes. Hvis matrisen fjernes, vises ingen utgang.

$ ekko "$ Assarray1 [@]"
$ unset Assarray1
$ ekko "$ Assarray1 [@]"

Produksjon:

Følgende utgang vises etter å ha kjørt kommandoene.

Konklusjon

Når det kreves å lagre flere data fra nøkkelverdipar i bash, er det bedre å bruke det assosiative matrisen for lagring av dataene. Hvordan koderen kan erklære og initialisere den assosiative matrisen, analyseres nøkler eller verdier eller begge deler, legg til og slett matriseelementer og fjerne matrise vises i denne opplæringen ved å bruke forskjellige skript. Håper, leseren vil i stand til å bruke assosiativ matrise i bash ordentlig etter å ha lest denne opplæringen.