Kako uporabljati indeksne nize v Bashu

Kako Uporabljati Indeksne Nize V Bashu



Bash zagotavlja podporo za indeksirane nize, ki so v bistvu seznami elementov, do katerih je mogoče dostopati z njihovo indeksno številko. Indeksirana polja so še posebej uporabna, če želite shraniti in manipulirati s številnimi povezanimi vrednostmi. Preberite ta članek, če želite izvedeti, kako uporabljati indeksna polja.

Kaj so indeksni nizi

Indeksirana polja so zbirka elementov v bashu, do katerih je mogoče dostopati z uporabo indeksa ali ključa. Te nize je mogoče uporabiti za shranjevanje in pridobivanje podatkov v določenem vrstnem redu, kar olajša upravljanje velikih količin podatkov. Sintaksa za deklaracijo indeksirane matrike v bash je naslednja:

< ime_matrike > = ( element1 element2 element3 ... )

Tu je ime_matrike ime matrike, element1, element2, element3 in tako naprej pa so vrednosti, ki jih je treba shraniti v matriko. Vrednosti so ločene s presledkom in upoštevajte, da lahko za ustvarjanje matrike uporabite tudi ukaz declare.







Kako uporabljati indeksirane nize v Bashu

Če želite ustvariti indeksno matriko v bash, morate preprosto deklarirati spremenljivko in ji dodeliti vrednosti v oklepajih in ločene s presledki. Tukaj je nekaj primerov, ki prikazujejo uporabo indeksiranih nizov v bashu:



Preurejanje seznama v Bashu

Če imate seznam predmetov v določenem vrstnem redu in jih želite preurediti na drugačen način. Z indeksnim poljem lahko ustvarite nov vrstni red za elemente, kot sledi:



#!/bin/bash
predmete = ( 'Mango' 'Ananas' 'Jagoda' 'češnja' 'Grozdje' )
naročilo = ( 4 2 0 3 1 )
za jaz v ' ${order[@]} '
narediti
odmev ${items[$i]}
Končano

V tem primeru ustvarimo matriko, imenovano items, s petimi elementi. Ustvarimo tudi indeksno matriko, imenovano order, ki določa nov vrstni red za elemente. Nato preletimo matriko naročil in vsako vrednost uporabimo kot indeks, da pridobimo ustrezen element iz matrike elementov in jo natisnemo.





Filtriranje seznama v Bashu

Če imate seznam elementov in želite filtrirati določene elemente glede na stanje. Z indeksno matriko lahko sledite indeksom elementov, ki izpolnjujejo pogoj, kot sledi:



#!/bin/bash
predmete = ( 'Mango' 'Ananas' 'Jagoda' 'češnja' 'Grozdje' )
indeksi = ( )

za jaz v ' ${!items[@]} '
narediti
če [ [ ${items[$i]} == * 'r' * ] ]
potem
indeksi+= ( $i )
biti
Končano

za jaz v ' ${indeksi[@]} '
narediti
odmev ${items[$i]}
Končano

V tem primeru ustvarimo matriko, imenovano items, s petimi elementi. Ustvarimo tudi prazno indeksno polje, imenovano indeksi. Nato preletimo niz elementov in preverimo, ali vsak element vsebuje črko 'r'. Če se, dodamo njegov indeks matriki indeksov. Nazadnje preletimo matriko indeksov in vsako vrednost uporabimo kot indeks, da pridobimo ustrezen element iz matrike elementov in jo natisnemo.

Štetje pojavitev v Bashu

Če imate seznam elementov in želite prešteti število pojavitev vsakega elementa, lahko uporabite matriko indeksov, da sledite štetjem, in tukaj je primer za predstavitev:

#!/bin/bash
predmete = ( 'Mango' 'Ananas' 'Jagoda' 'češnja' 'Grozdje' )
šteje = ( )

za jaz v ' ${!items[@]} '
narediti
če [ [ ! ' ${counts[@]} ' =~ ' ${items[$i]} ' ] ]
potem
šteje+= ( ' ${items[$i]} 1' )
drugače
kazalo =$ ( odmev ' ${counts[@]} ' | tr ' ' '\n' | prijem -n '^ ${items[$i]} ' | z )
štetje =$ ( odmev ' ${counts[$index-1]} ' | rezati -d ' ' -f2 )
šteje [ $index - 1 ] = ' ${items[$i]} $((štetje+1) )'
biti
Končano

za štetje v ' ${counts[@]} '
narediti
odmev $count
Končano

Najprej inicializira matriko, imenovano 'items', s seznamom nizov. Nato deklarira prazno matriko, imenovano 'counts'. Ustvari se zanka for za ponavljanje za vsak element v matriki »items« in za vsak element preveri, ali že obstaja v matriki »counts«.

Če ne obstaja, doda postavko in štetje 1 v polje »counts«. Če obstaja, poveča število tega elementa v matriki »counts«. Na koncu se za izpis vsakega elementa in njegovega ustreznega števila uporabi še ena zanka for. Izhod te kode bo natisnil število vsakega elementa v matriki »items«, dvojniki pa se bodo šteli ločeno.

Posodabljanje seznama v Bashu

Če imate seznam elementov in želite dodati ali izbrisati elemente z njega, lahko zanj uporabite indeksno polje in tukaj je primer za predstavitev:

#!/bin/bash
predmete = ( 'Mango' 'Ananas' 'Jagoda' 'češnja' 'Grozdje' )

# Dodajanje novega elementa v indeksirano polje pri indeksu 2
predmete [ 6 ] = 'oranžna'
# Brisanje elementa z indeksom 2 iz indeksirane matrike
nenastavljeno predmete [ 2 ]

# Tiskanje posodobljene matrike
odmev ' ${items[@]} '

V skriptu je definirana indeksirana matrika 'items' s petimi začetnimi elementi. Če želite dodati nov element, se vrednost preprosto dodeli želenemu indeksu s sintakso array[index]=value. V tem skriptu je »oranžna« dodana indeksu 6 matrike. Za brisanje elementa uporabimo ukaz unset, ki mu sledi indeks elementa, ki ga želimo odstraniti. V tem primeru se element z indeksom 2 (»Jagoda«) izbriše. Posodobljena matrika se nato natisne s sintakso »${array[@]}«, ki razširi celotno matriko.

Zaključek

Indeksirana polja so priročna struktura bash, ki vam omogoča shranjevanje in upravljanje več vrednosti z uporabo ene same spremenljivke. Z razumevanjem sintakse in uporabe indeksiranih nizov lahko pišete učinkovitejše in učinkovitejše skripte bash.