- Definer en matrise etter indeks
- Definer en matrise med flere verdier
- Definer en assosiativ matrise
- Tell matriseverdiene
- Les Array Values by Loop
- Les de spesielle verdiene til matrisen
- Sett inn matriseverdier
- Les et filinnhold inn i matrisen
- Kombiner matriseverdiene
- Endre matriseverdiene
- Fjern matriseverdiene
- Søk og erstatt matriseverdiene
- Bruk en matrise som et funksjonsargument
- Returner matrisen fra funksjonen
- Gjør matrisen tom
Definer en matrise etter indeks
Metoden for å deklarere en matrise ved å nevne de sekvensielle eller ikke-sekvensielle numeriske indeksene er vist i følgende skript. Denne typen matrise kalles en numerisk matrise. Her opprettes «$books»-matrisen ved å definere tre sekvensielle indekser og «$products»-matrisen opprettes ved å definere fire ikke-sekvensielle indekser. Alle verdier for begge matrisene skrives ut ved å bruke 'printf'-funksjonen.
#!/bin/bash
#Definer matriseindeks i sekvensiell rekkefølge
bøker [ 0 ] = 'Lære bash Shell'
bøker [ 1 ] = 'Ops for cybersikkerhet med bash'
bøker [ 2 ] = 'Bash Command Line Pro-tips'
ekko 'Alle verdier for den første matrisen:'
printf '%s\n' ' ${books[@]} '
#Definer matriseindeks i ikke-sekvensiell rekkefølge
Produkter [ 10 ] = 'Penn'
Produkter [ 5 ] = 'Blyant'
Produkter [ 9 ] = 'Regel'
Produkter [ 4 ] = 'A4-papir'
ekko
ekko 'Alle verdier for den andre matrisen:'
printf '%s\n' ' ${products[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Verdiene til begge matrisene skrives ut i utdataene. Indeksrekkefølgen opprettholdes på utskriftstidspunktet for utvalget av ikke-sekvensielle indekser:
Definer en matrise med flere verdier
En numerisk matrise med flere verdier kan deklareres ved å bruke 'declare'-kommandoen med -a-alternativet eller uten å bruke 'declare'-kommandoen. I det følgende skriptet deklareres den første matrisen ved å bruke 'declare'-kommandoen og den andre matrisen opprettes uten å bruke 'declare'-kommandoen.
#!/bin/bash
#Deklarer en numerisk matrise med nøkkelordet 'declare'
erklære -en navn = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' )
#Skriv ut matriseverdiene
ekko 'Alle verdier for den første matrisen:'
printf '%s\n' ' ${names[@]} '
#Deklarer en numerisk matrise uten 'declare' nøkkelord
bøker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash raskt' )
#Legg til ny linje
ekko
#Skriv ut matriseverdiene
ekko 'Alle verdier for den andre matrisen:'
printf '%s\n' ' ${books[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Verdiene til begge matrisene skrives ut her:
Definer en assosiativ matrise
Matrisen som inneholder strengverdien som indeks kalles en assosiativ matrise. Alternativet -A brukes med kommandoen 'declare' i Bash for å lage en assosiativ Bash-array. I det følgende skriptet erklæres den første assosiative matrisen ved å nevne indeksene separat, og den andre matrisen er deklarert ved å nevne alle nøkkelverdi-par på tidspunktet for matriseerklæringen.
#!/bin/bash#Deklarer en assosiativ matrisevariabel uten verdi
erklære -EN ansatt
#Tildel verdi separat ved å definere indeksen
ansatt [ 'id' ] = '78564'
ansatt [ 'Navn' ] = 'Tilgjengelig skuespiller'
ansatt [ 'post' ] = 'ADMINISTRERENDE DIREKTØR'
ansatt [ 'lønn' ] = 300 000
#Skriv ut to verdier av matrisen
ekko 'Ansatt ID: ${employee[id]} '
ekko 'Ansattes navn: ${employee[name]} '
#Erklære en assosiativ matrise med verdier
erklære -EN kurs = ( [ kode ] = 'CSE-206' [ Navn ] = 'Objektorientert programmering' [ kreditttime ] = 2.0 )
#Legg til ny linje
ekko
#Skriv ut to matriseverdier av den andre matrisen
ekko 'Kursnavn: ${kurs[navn]} '
ekko 'Kreditttime: ${course[credit_hour]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. De spesielle verdiene til den assosiative matrisen skrives ut her ved å nevne nøkkel- eller indeksverdien:
Tell matriseverdiene
Metoden for å telle de totale elementene i den numeriske matrisen og den assosiative matrisen er vist i følgende skript:
#!/bin/bash#Deklarer en numerisk matrise
erklære -en navn = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' ) ;
ekko 'Lengden på den numeriske matrisen er ${#names[@]} '
#Erklære en assosiativ matrise
erklære -EN kurs = ( [ kode ] = 'CSE-206' [ Navn ] = 'Objektorientert programmering' [ kreditttime ] = 2.0 )
ekko 'Lengden på den assosiative matrisen er ${#kurs[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Matriselengden til de numeriske og assosiative matrisene skrives ut her:
Les Array Values by Loop
Metoden for å lese alle verdiene til en numerisk matrise og en assosiativ matrise ved å bruke 'for'-løkken er vist i følgende skript:
#!/bin/bash#Deklarer en numerisk matrise
erklære -en bøker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash raskt' )
#Skriv ut de numeriske matriseverdiene
ekko 'Numeriske matriseverdier er:'
til i i ' ${books[@]} '
gjøre
ekko ' $in '
ferdig
ekko
#Erklære en assosiativ matrise med verdier
erklære -EN klienter = (
[ id ] = 'H-5623'
[ Navn ] = 'MR. Ahnaf'
[ adresse ] = '6/A, Dhanmondi, Dhaka.'
[ telefon ] = '+8801975642312' )
#Skriv ut de assosiative matriseverdiene
ekko 'Associative matriseverdier er:'
til k i ' ${!clients[@]} '
gjøre
ekko ' $k => ${clients[$k]} '
ferdig
Produksjon :
Følgende utdata vises etter utføring av skriptet. Her skrives verdiene til den numeriske matrisen og nøkkelverdi-parene til den assosiative matrisen ut i utdataene:
Les det spesielle verdiområdet til matrisen
Matriseverdiene for det bestemte området av indeksene vises i følgende skript. I skriptet er en numerisk matrise med fire elementer definert. To matriseverdier fra den andre indeksen til matrisen skrives ut senere.
#!/bin/bash#Deklarer en numerisk matrise
erklære -en kaker = ( 'Sjokoladekake' 'Vaniljekake' 'Red Velvet Cake' 'jordbær kake' )
#Skriv ut de spesielle matriseverdiene
ekko 'Det andre og tredje elementet i matriseverdiene er:'
printf '%s\n' ' ${kaker[@]:1:2} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Den andre og tredje verdien av matrisen er 'Vanilla Cake' og 'Red Velvet Cake' som er skrevet ut i utdataene:
Sett inn matriseverdien
Metoden for å legge til flere verdier på slutten av matrisen er vist i følgende skript. Hovedmatrisen som er '$books' inneholder tre elementer og to elementer legges til på slutten av '$books'-matrisen.
#!/bin/bash#Deklarer en numerisk matrise
erklære -en bøker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash raskt' )
#Skriv ut matriseverdiene før du setter inn
ekko 'Matriseverdier:'
printf '%s\n' ' ${books[@]} '
ekko
bøker = ( ' ${books[@]} ' 'Linux Command Line and Shell Scripting Bible' 'Advanced Bash Scripting Guide av Mendel Cooper' )
#Skriv ut matriseverdiene etter innsetting
ekko 'Matriseverdier etter innsetting av to verdier:'
printf '%s\n' ' ${books[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Matriseverdiene før og etter innsetting av nye verdier skrives ut i utdataene:
Les filinnholdet inn i matrisen
Lag en tekstfil kalt 'fruits.txt' med følgende innhold for å teste skriptet i dette eksemplet:
frukt.txt
MangoJackfrukt
Ananas
oransje
Banan
I det følgende skriptet lagres innholdet i en fil i en matrise kalt '$data'. Her lagres hver linje i filen som hvert element i matrisen. Deretter skrives matriseverdiene ut.
#!/bin/bash#Les filnavnet fra brukeren
lese -s 'Skriv inn filnavnet:' filnavn
hvis [ -f $filnavn ]
deretter
#Les filinnholdet inn i en matrise'
data = ( ` katt ' $filnavn ' ` )
ekko 'Innholdet i filen er gitt nedenfor:'
#Les filen linje for linje
til linje i ' ${data[@]} '
gjøre
ekko $line
ferdig
være
Produksjon :
Følgende utdata vises etter utføring av skriptet. Utdataene som vises av 'cat'-kommandoen og utdataene fra skriptet er like fordi den samme filen åpnes av 'cat'-kommandoen og skriptet:
Kombiner matriseverdiene
En ny matrise opprettes ved å kombinere verdiene til flere matriser. I det følgende skriptet er to numeriske arrays av strenger definert. Deretter opprettes en ny matrise ved å kombinere verdiene til disse matrisene.
#!/bin/bash#Deklarer den første matrisen
erklære -en navneliste1 = ( 'Michael' 'David' 'Alexander' 'Thomas' )
ekko 'De første matriseverdiene er:'
printf '%s, ' ${nameList1[@]}
ekko
#Deklarer den andre matrisen
erklære -en navneliste2 = ( 'Robert' 'Richard' )
ekko 'Den andre matriseverdiene er:'
printf '%s, ' ${nameList2[@]}
ekko
#Opprett en ny matrise ved å kombinere to matriser
kombinert_array = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )
ekko 'De kombinerte matriseverdiene er:'
printf '%s, ' ${combined_array[@]}
ekko
Produksjon :
Følgende utdata vises etter utføring av skriptet. Her skrives verdiene til tre matriser ut i utdataene. Den tredje matrisen inneholder alle verdiene til den første og andre matrisen:
Endre matriseverdiene
Metoden for å oppdatere en eller flere matriseverdier ved å nevne indeksen vises i følgende skript:
#!/bin/bash#Deklarer den første matrisen
erklære -en navneliste = ( 'Michael' 'David' 'Alexander' 'Thomas' )
ekko 'Matriseverdier:'
printf '%s, ' ${nameList[@]}
ekko
#Oppdater den andre verdien til matrisen
navneliste [ 1 ] = 'Robert'
ekko 'Matriseverdier etter oppdatering:'
printf '%s, ' ${nameList[@]}
ekko
Produksjon :
Følgende utdata vises etter utføring av skriptet. Verdiene til hovedmatrisen og de oppdaterte matrisene skrives ut i utdataene:
Fjern matriseverdiene
Kommandoen 'unset' brukes til å fjerne det spesielle elementet eller alle elementene i matrisen. I det følgende skriptet fjernes det andre elementet i matrisen.
#!/bin/bash#Deklarer en numerisk matrise
erklære -en bøker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash raskt' )
#Skriv ut matriseverdiene før du fjerner
ekko 'Matriseverdier:'
printf '%s\n' ' ${books[@]} '
ekko
#Fjern det andre elementet
deaktivert bøker [ 1 ]
#Skriv ut matriseverdiene etter fjerning
ekko 'Array-verdier etter fjerning av den andre verdien:'
printf '%s\n' ' ${books[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Verdiene til hovedmatrisen og matriseverdiene etter fjerning av én verdi skrives ut i utdataene:
Søk og erstatt matriseverdiene
I det følgende skriptet erstattes den spesielle verdien til matrisen med en annen verdi hvis søkeverdien som er definert i mønsteret, samsvarer med en hvilken som helst verdi av «$names»-matrisen.
#!/bin/bash#Deklarer den første matrisen
erklære -en navn = ( 'Michael' 'David' 'Alexander' 'Thomas' )
#Skriv ut de originale matriseverdiene
ekko 'Originale matriseverdier:'
printf '%s\n' ' ${names[@]} '
#Generer streng etter å ha erstattet matriseverdiene
oppdatert_array = ${names[@]/Alexander/Richard}
#Skriv ut matriseverdiene etter erstatning
ekko 'Matriseverdier etter erstatning:'
printf '%s\n' ' ${updated_array[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Verdiene til hovedmatrisen og matriseverdiene etter å ha erstattet en verdi skrives ut i utdataene:
Bruk en matrise som et funksjonsargument
I det følgende skriptet sendes en matrisevariabel som funksjonsargument, og verdiene til den matrisen skrives ut senere.
#!/bin/bash#Deklarer en rekke tall
erklære -en tall = ( 10 6 Fire fem 1. 3 8 )
#Definer en funksjon som tar en argumentverdi
func ( )
{
#Les det første argumentet
tall = $1
#Skriv ut matriseverdiene
ekko 'Matriseverdier:'
printf '%d\n' ' ${numbers[@]} '
}
#Kall funksjonen med matrisen som argument
func ' ${numbers[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet:
Returner en matrise fra funksjonen
I det følgende skriptet kalles funksjonen med fire numeriske argumenter. En matrise opprettes med argumentverdiene, og den matrisen returneres fra funksjonen til den som ringer.
#!/bin/bash#Definer en funksjon som leser fire argumentverdier
func ( )
{
#Les argumentverdiene
tall = ( $1 $2 $3 $4 )
#Returner matrisen
ekko ' ${numbers[@]} '
}
#Kall funksjonen med tre argumenter
retur_verdi =$ ( func 78 Fire fem 90 23 )
#Lagre returverdien i en matrise
lese -en på en <<< $return_val
#Skriv ut verdiene til den returnerte matrisen
ekko 'Verdiene til matrisen er:'
til i i ' ${num[@]} '
gjøre
ekko ' $in '
ferdig
Produksjon :
Følgende utdata vises etter utføring av skriptet:
Gjør matrisen tom
Følgende skript viser metoden for å gjøre en matrise tom ved å bruke kommandoen 'unset'. Det totale antallet matriseverdier skrives ut før og etter at matrisen er tom.
#!/bin/bash#Deklarer en rekke tall
erklære -en tall = ( 10 6 Fire fem 1. 3 80 )
ekko 'Antall matriseverdier: ${#numbers[@]} '
#Gjør matrisen tom
deaktivert tall
ekko 'Antall matriseverdier etter at matrisen er tom: ${#numbers[@]} '
Produksjon :
Følgende utdata vises etter utføring av skriptet. Antall elementer i matrisen ble 0 etter å ha gjort matrisen tom:
Konklusjon
Ulike metoder for å deklarere, få tilgang til, endre og fjerne array-variablene i Bash-skriptet er vist i denne opplæringen ved hjelp av 15 enkle eksempler. Vi håper at denne opplæringen vil hjelpe Bash-brukerne til å kjenne bruken av Bash-array i detalj.