- Definirajte matriko z indeksom
- Določite matriko z več vrednostmi
- Definirajte asociativno polje
- Preštejte vrednosti niza
- Preberite vrednosti niza po zanki
- Preberite posebne vrednosti matrike
- Vstavite vrednosti polja
- Preberite vsebino datoteke v matriko
- Združite vrednosti niza
- Spremenite vrednosti polja
- Odstranite vrednosti polja
- Poiščite in zamenjajte vrednosti niza
- Uporabite matriko kot argument funkcije
- Vrni matriko iz funkcije
- Naj bo polje prazno
Definirajte matriko z indeksom
Metoda deklaracije matrike z omembo zaporednih ali nezaporednih numeričnih indeksov je prikazana v naslednjem skriptu. To vrsto matrike imenujemo številska matrika. Tu se matrika »$books« ustvari z definiranjem treh zaporednih indeksov, matrika »$products« pa z definiranjem štirih nezaporednih indeksov. Vse vrednosti obeh nizov se natisnejo s funkcijo »printf«.
#!/bin/bash
#Določite indeks matrike v zaporednem vrstnem redu
knjige [ 0 ] = 'Učenje lupine bash'
knjige [ 1 ] = »Cybersecurity Ops with bash«
knjige [ 2 ] = 'Profesionalni nasveti za ukazno vrstico Bash'
odmev 'Vse vrednosti prve matrike:'
printf '%s\n' ' ${knjige[@]} '
#Definiraj matrični indeks v nezaporednem vrstnem redu
izdelkov [ 10 ] = 'pero'
izdelkov [ 5 ] = 'Svinčnik'
izdelkov [ 9 ] = 'Rular'
izdelkov [ 4 ] = 'Papir velikosti A4'
odmev
odmev 'Vse vrednosti drugega polja:'
printf '%s\n' ' ${products[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Vrednosti obeh nizov so natisnjene v izhodu. Vrstni red indeksov se ohrani v času tiskanja za niz nezaporednih indeksov:
Določite matriko z več vrednostmi
Številsko matriko z več vrednostmi je mogoče deklarirati z ukazom »declare« z možnostjo -a ali brez uporabe ukaza »declare«. V naslednjem skriptu je prva matrika deklarirana z ukazom »declare«, druga matrika pa je ustvarjena brez uporabe ukaza »declare«.
#!/bin/bash
#Deklarajte številsko matriko s ključno besedo 'declare'
izjaviti -a imena = ( 'Michael' 'David' 'Aleksander' 'Thomas' 'Robert' 'Richard' )
#Natisnite vrednosti polja
odmev 'Vse vrednosti prve matrike:'
printf '%s\n' ' ${names[@]} '
#Deklarajte številsko matriko brez ključne besede 'declare'
knjige = ( 'Vadnice za skriptno lupino' 'Bish Bash Bosh!' 'Hitro se nauči Bash' )
#Dodaj novo vrstico
odmev
#Natisnite vrednosti polja
odmev 'Vse vrednosti drugega polja:'
printf '%s\n' ' ${knjige[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Vrednosti obeh nizov so natisnjene tukaj:
Definirajte asociativno polje
Matrika, ki vsebuje vrednost niza kot indeks, se imenuje asociativna matrika. Možnost -A se uporablja z ukazom »declare« v Bashu za ustvarjanje asociativnega niza Bash. V naslednjem skriptu je prva asociativna matrika deklarirana z ločeno omembo indeksov, druga matrika pa je deklarirana z omembo vseh parov ključ-vrednost v času deklaracije matrike.
#!/bin/bash#Deklarajte asociativno matrično spremenljivko brez vrednosti
izjaviti -A zaposleni
#Ločeno dodelite vrednost z določitvijo indeksa
zaposleni [ 'id' ] = '78564'
zaposleni [ 'ime' ] = 'Igralci na voljo'
zaposleni [ 'post' ] = 'DIREKTOR'
zaposleni [ 'plača' ] = 300000
#Natisni dve vrednosti matrike
odmev »ID zaposlenega: ${employee[id]} '
odmev 'Ime zaposlenega: ${employee[name]} '
#Deklarajte asociativno polje z vrednostmi
izjaviti -A seveda = ( [ Koda ] = 'CSE-206' [ ime ] = 'Objektno usmerjeno programiranje' [ kreditna_ura ] = 2.0 )
#Dodaj novo vrstico
odmev
#Natisni dve vrednosti matrike druge matrike
odmev 'Ime tečaja: ${tečaj[ime]} '
odmev 'Kreditna ura: ${course[credit_hour]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Posebne vrednosti asociativnega niza so natisnjene tukaj z navedbo vrednosti ključa ali indeksa:
Preštejte vrednosti niza
Metoda štetja skupnih elementov številske matrike in asociativne matrike je prikazana v naslednji skripti:
#!/bin/bash#Deklarajte številsko matriko
izjaviti -a imena = ( 'Michael' 'David' 'Aleksander' 'Thomas' 'Robert' 'Richard' ) ;
odmev 'Dolžina številske matrike je ${#names[@]} '
#Deklarirajte asociativno polje
izjaviti -A seveda = ( [ Koda ] = 'CSE-206' [ ime ] = 'Objektno usmerjeno programiranje' [ kreditna_ura ] = 2.0 )
odmev 'Dolžina asociativnega niza je ${#course[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Dolžine številskih in asociativnih nizov so natisnjene tukaj:
Preberite vrednosti niza po zanki
Metoda branja vseh vrednosti številske matrike in asociativne matrike z uporabo zanke »za« je prikazana v naslednjem skriptu:
#!/bin/bash#Deklarajte številsko matriko
izjaviti -a knjige = ( 'Vadnice za skriptno lupino' 'Bish Bash Bosh!' 'Hitro se nauči basha' )
#Natisnite vrednosti številskega polja
odmev 'Vrednosti številskega polja so:'
za v v ' ${knjige[@]} '
narediti
odmev ' $in '
Končano
odmev
#Deklarajte asociativno polje z vrednostmi
izjaviti -A stranke = (
[ id ] = 'H-5623'
[ ime ] = 'Gospod. Ahnaf'
[ naslov ] = '6/A, Dhanmondi, Daka.'
[ telefon ] = '+8801975642312' )
#Natisnite vrednosti asociativnega polja
odmev 'Vrednosti asociativnega niza so:'
za k v ' ${!klienti[@]} '
narediti
odmev ' $k => ${clients[$k]} '
Končano
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Tu so v izhodu natisnjene vrednosti številske matrike in pari ključ-vrednost asociativne matrike:
Preberite določen obseg vrednosti matrike
Vrednosti polja za določen obseg indeksov so prikazane v naslednjem skriptu. V skriptu je definiran številski niz štirih elementov. Dve vrednosti matrike iz drugega indeksa matrike se natisnejo pozneje.
#!/bin/bash#Deklarajte številsko matriko
izjaviti -a torte = ( 'Čokoladna torta' 'Vanilijeva torta' 'Rdeča žametna torta' 'jagodna torta' )
#Natisnite določene vrednosti polja
odmev 'Drugi in tretji element vrednosti niza sta:'
printf '%s\n' ' ${torte[@]:1:2} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Druga in tretja vrednost matrike sta »Vanilla Cake« in »Red Velvet Cake«, ki sta natisnjeni v izhodu:
Vstavite vrednosti polja
Metoda dodajanja več vrednosti na koncu matrike je prikazana v naslednjem skriptu. Glavna matrika, ki je »$books«, vsebuje tri elemente, dva elementa pa sta dodana na koncu matrike »$books«.
#!/bin/bash#Deklarajte številsko matriko
izjaviti -a knjige = ( 'Vadnice za skriptno lupino' 'Bish Bash Bosh!' 'Hitro se nauči basha' )
#Natisnite vrednosti polja pred vstavljanjem
odmev 'Vrednosti polja:'
printf '%s\n' ' ${knjige[@]} '
odmev
knjige = ( ' ${knjige[@]} ' 'Linuxova ukazna vrstica in skriptna lupina' 'Advanced Bash Scripting Guide by Mendel Cooper' )
#Natisnite vrednosti polja po vstavljanju
odmev 'Vrednosti polja po vstavitvi dveh vrednosti:'
printf '%s\n' ' ${knjige[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Vrednosti polja pred in po vstavljanju novih vrednosti so natisnjene v izhodu:
Preberite vsebino datoteke v polje
Ustvarite besedilno datoteko z imenom “fruits.txt” z naslednjo vsebino, da preizkusite skript tega primera:
sadje.txt
Mangokruhovec
Ananas
Oranžna
Banana
V naslednjem skriptu je vsebina datoteke shranjena v matriko z imenom “$data”. Tu je vsaka vrstica datoteke shranjena kot vsak element matrike. Nato se natisnejo vrednosti polja.
#!/bin/bash#Preberite ime datoteke od uporabnika
prebrati -str 'Vnesite ime datoteke:' Ime datoteke
če [ -f $ime datoteke ]
potem
#Preberi vsebino datoteke v matriko'
podatke = ( ` mačka ' $ime datoteke ' ` )
odmev 'Vsebina datoteke je podana spodaj:'
#Preberite datoteko vrstico za vrstico
za linija v ' ${podatki[@]} '
narediti
odmev $line
Končano
biti
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Izhod, ki ga prikaže ukaz »cat«, in izhod skripta sta podobna, ker do iste datoteke dostopata ukaz »cat« in skript:
Združite vrednosti niza
Nova matrika se ustvari s kombiniranjem vrednosti več matrik. V naslednjem skriptu sta definirani dve številski matriki nizov. Nato se z združevanjem vrednosti teh nizov ustvari nova matrika.
#!/bin/bash#Deklarajte prvo matriko
izjaviti -a Seznam imen1 = ( 'Michael' 'David' 'Aleksander' 'Thomas' )
odmev 'Prve vrednosti matrike so:'
printf '%s, ' ${nameList1[@]}
odmev
#Deklarajte drugo polje
izjaviti -a Seznam imen2 = ( 'Robert' 'Richard' )
odmev 'Vrednosti druge matrike so:'
printf '%s,' ${nameList2[@]}
odmev
#Ustvarite novo matriko tako, da združite dve matriki
kombinirana_matrika = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )
odmev 'Združene vrednosti niza so:'
printf '%s,' ${combined_array[@]}
odmev
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Tukaj so v izhodu natisnjene vrednosti treh nizov. Tretja matrika vsebuje vse vrednosti prve in druge matrike:
Spremenite vrednosti polja
Metoda posodabljanja ene ali več vrednosti matrike z omembo indeksa je prikazana v naslednjem skriptu:
#!/bin/bash#Deklarajte prvo matriko
izjaviti -a imenski seznam = ( 'Michael' 'David' 'Aleksander' 'Thomas' )
odmev 'Vrednosti polja:'
printf '%s, ' ${nameList[@]}
odmev
#Posodobi 2. vrednost matrike
imenski seznam [ 1 ] = 'Robert'
odmev 'Vrednosti niza po posodobitvi:'
printf '%s,' ${nameList[@]}
odmev
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Vrednosti glavne matrike in posodobljene matrike so natisnjene v izhodu:
Odstranite vrednosti polja
Ukaz “unset” se uporablja za odstranitev določenega elementa ali vseh elementov matrike. V naslednjem skriptu je drugi element matrike odstranjen.
#!/bin/bash#Deklarajte številsko matriko
izjaviti -a knjige = ( 'Vadnice za skriptno lupino' 'Bish Bash Bosh!' 'Hitro se nauči basha' )
#Natisnite vrednosti polja pred odstranitvijo
odmev 'Vrednosti polja:'
printf '%s\n' ' ${knjige[@]} '
odmev
#Odstranite 2. element
nenastavljeno knjige [ 1 ]
#Natisnite vrednosti polja po odstranitvi
odmev 'Vrednosti niza po odstranitvi 2. vrednosti:'
printf '%s\n' ' ${knjige[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Vrednosti glavne matrike in vrednosti matrike po odstranitvi ene vrednosti so natisnjene v izhodu:
Poiščite in zamenjajte vrednosti niza
V naslednjem skriptu se določena vrednost matrike nadomesti z drugo vrednostjo, če se iskalna vrednost, ki je definirana v vzorcu, ujema s katero koli vrednostjo matrike »$names«.
#!/bin/bash#Deklarajte prvo matriko
izjaviti -a imena = ( 'Michael' 'David' 'Aleksander' 'Thomas' )
#Natisni izvirne vrednosti matrike
odmev 'Izvirne vrednosti niza:'
printf '%s\n' ' ${names[@]} '
#Generiraj niz po zamenjavi vrednosti polja
posodobljena_matrika = ${names[@]/Alexander/Richard}
#Natisni vrednosti polja po zamenjavi
odmev 'Vrednosti polja po zamenjavi:'
printf '%s\n' ' ${updated_array[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Vrednosti glavne matrike in vrednosti matrike po zamenjavi vrednosti so natisnjene v izhodu:
Uporabite matriko kot argument funkcije
V naslednjem skriptu je matrična spremenljivka posredovana kot argument funkcije, vrednosti te matrike pa se natisnejo pozneje.
#!/bin/bash#Deklarajte niz števil
izjaviti -a številke = ( 10 6 Štiri, pet 13 8 )
#Določite funkcijo, ki bo prevzela vrednost argumenta
funk ( )
{
#Preberi prvi argument
številke = 1 dolar
#Natisnite vrednosti polja
odmev 'Vrednosti polja:'
printf '%d\n' ' ${numbers[@]} '
}
#Pokliči funkcijo z nizom kot argumentom
funk ' ${numbers[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat:
Vrni matriko iz funkcije
V naslednjem skriptu se funkcija kliče s štirimi številskimi argumenti. Ustvari se niz z vrednostmi argumentov in ta niz se vrne iz funkcije klicatelju.
#!/bin/bash#Definirajte funkcijo, ki bere štiri vrednosti argumentov
funk ( )
{
#Preberite vrednosti argumentov
številke = ( 1 dolar 2 $ 3 $ 4 $ )
#Vrni matriko
odmev ' ${numbers[@]} '
}
#Pokličite funkcijo s tremi argumenti
return_val =$ ( funk 78 Štiri, pet 90 23 )
#Shrani vrnjeno vrednost v matriko
prebrati -a na enem <<< $return_val
#Natisni vrednosti vrnjene matrike
odmev 'Vrednosti matrike so:'
za v v ' ${num[@]} '
narediti
odmev ' $in '
Končano
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat:
Naj bo polje prazno
Naslednji skript prikazuje metodo za praznjenje matrike z ukazom »unset«. Skupno število vrednosti matrike se natisne pred in po izpraznitvi matrike.
#!/bin/bash#Deklarajte niz števil
izjaviti -a številke = ( 10 6 Štiri, pet 13 80 )
odmev 'Števila vrednosti niza: ${#numbers[@]} '
#Matrika naj bo prazna
nenastavljeno številke
odmev 'Število vrednosti matrike po izpraznitvi matrike: ${#numbers[@]} '
Izhod :
Po izvedbi skripta se prikaže naslednji rezultat. Število elementov matrike je postalo 0, potem ko je matrika postala prazna:
Zaključek
Različne metode deklariranja, dostopanja, spreminjanja in odstranjevanja spremenljivk polja v skriptu Bash so prikazane v tej vadnici z uporabo 15 preprostih primerov. Upamo, da bo ta vadnica uporabnikom Bash pomagala podrobno poznati uporabo matrike Bash.