Kako manipulirati in nadzorovati podatke z Bash Array

Kako Manipulirati In Nadzorovati Podatke Z Bash Array



Matrična spremenljivka se uporablja v katerem koli programskem jeziku za shranjevanje več vrednosti z uporabo indeksa. Indeks matrike je lahko število ali niz. Matrika, ki vsebuje številski indeks, se imenuje 'številska matrika', matrika, ki vsebuje vrednost niza kot indeks, pa se imenuje 'asociativna matrika'. V Bashu je mogoče ustvariti tako številske kot asociativne nize. Metode manipulacije in nadzora podatkov matrike Bash so podrobno prikazane z uporabo 15 primerov v tej vadnici.

Seznam vsebine:

  1. Definirajte matriko z indeksom
  2. Določite matriko z več vrednostmi
  3. Definirajte asociativno polje
  4. Preštejte vrednosti niza
  5. Preberite vrednosti niza po zanki
  6. Preberite posebne vrednosti matrike
  7. Vstavite vrednosti polja
  8. Preberite vsebino datoteke v matriko
  9. Združite vrednosti niza
  10. Spremenite vrednosti polja
  11. Odstranite vrednosti polja
  12. Poiščite in zamenjajte vrednosti niza
  13. Uporabite matriko kot argument funkcije
  14. Vrni matriko iz funkcije
  15. 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:



  p1





Pojdi na vrh

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:

  p2

Pojdi na vrh

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:

  p3

Pojdi na vrh

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:

  p4

Pojdi na vrh

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:

  p5

Pojdi na vrh

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:

  p6

Pojdi na vrh

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:

  p7

Pojdi na vrh

Preberite vsebino datoteke v polje

Ustvarite besedilno datoteko z imenom “fruits.txt” z naslednjo vsebino, da preizkusite skript tega primera:

sadje.txt

Mango

kruhovec

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:

  p8

Pojdi na vrh

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:

  p9

Pojdi na vrh

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:

  p10

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:

  str11

Pojdi na vrh

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:

  str12

Pojdi na vrh

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:

  str13

Pojdi na vrh

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:

Pojdi na vrh

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:

  str15

Pojdi na vrh

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.