Hvordan man manipulerer og kontrollerer data med Bash Array

Hvordan Man Manipulerer Og Kontrollerer Data Med Bash Array



En array-variabel bruges i ethvert programmeringssprog til at gemme flere værdier ved hjælp af et indeks. Matrixindekset kan være et tal eller en streng. Arrayet, der indeholder det numeriske indeks, kaldes 'numerisk array', og arrayet, der indeholder strengværdien som indekset, kaldes 'associative array'. Både numeriske og associative arrays kan oprettes i Bash. Metoderne til at manipulere og kontrollere dataene i Bash-arrayet er vist i detaljer ved hjælp af 15 eksempler i denne tutorial.

Liste over indhold:

  1. Definer et array efter indeks
  2. Definer en matrix med flere værdier
  3. Definer et associativt array
  4. Tæl matrixværdierne
  5. Læs Array Values ​​by Loop
  6. Læs de særlige værdier af arrayet
  7. Indsæt matrixværdierne
  8. Læs et filindhold ind i arrayet
  9. Kombiner matrixværdierne
  10. Rediger matrixværdierne
  11. Fjern matrixværdierne
  12. Søg og erstat matrixværdierne
  13. Brug et array som et funktionsargument
  14. Returner arrayet fra funktionen
  15. Gør arrayet tomt

Definer et array efter indeks

Metoden til at erklære et array ved at nævne de sekventielle eller ikke-sekventielle numeriske indekser er vist i følgende script. Denne type array kaldes en numerisk array. Her oprettes '$books'-arrayet ved at definere tre sekventielle indekser, og '$products'-arrayet oprettes ved at definere fire ikke-sekventielle indekser. Alle værdier for begge arrays udskrives ved hjælp af 'printf'-funktionen.







#!/bin/bash

#Definer matrixindeks i sekventiel rækkefølge

bøger [ 0 ] = 'At lære bash Shell'

bøger [ 1 ] = 'Cybersikkerhedsops med bash'

bøger [ 2 ] = 'Bash Command Line Pro Tips'

ekko 'Alle værdier af det første array:'

printf '%s\n' ' ${bøger[@]} '

#Definer matrixindeks i ikke-sekventiel rækkefølge

Produkter [ 10 ] = 'Pen'

Produkter [ 5 ] = 'Blyant'

Produkter [ 9 ] = 'Regel'

Produkter [ 4 ] = 'A4-papir'

ekko

ekko 'Alle værdier af den anden matrix:'

printf '%s\n' ' ${products[@]} '

Produktion :



Følgende output vises efter eksekvering af scriptet. Værdierne for begge arrays udskrives i outputtet. Indeksrækkefølgen opretholdes på udskrivningstidspunktet for rækken af ​​ikke-sekventielle indekser:



  p1





Gå til toppen

Definer en matrix med flere værdier

Et numerisk array med flere værdier kan erklæres ved at bruge kommandoen 'declare' med -a-indstillingen eller uden at bruge 'declare'-kommandoen. I det følgende script er det første array erklæret ved hjælp af kommandoen 'declare', og det andet array oprettes uden at bruge kommandoen 'declare'.



#!/bin/bash

#Deklarer et numerisk array med nøgleordet 'declare'

erklære -en navne = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' )

#Udskriv matrixværdierne

ekko 'Alle værdier af det første array:'

printf '%s\n' ' ${names[@]} '

#Deklarer et numerisk array uden 'erklær' nøgleord

bøger = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash hurtigt' )

#Tilføj ny linje

ekko

#Udskriv matrixværdierne

ekko 'Alle værdier af den anden matrix:'

printf '%s\n' ' ${bøger[@]} '

Produktion :

Følgende output vises efter eksekvering af scriptet. Værdierne for begge arrays udskrives her:

  s2

Gå til toppen

Definer et associativt array

Det array, der indeholder strengværdien som indeks, kaldes et associativt array. Valgmuligheden -A bruges sammen med kommandoen 'declare' i Bash for at skabe et associativt Bash-array. I det følgende script er det første associative array erklæret ved at nævne indeksene separat, og det andet array er deklareret ved at nævne alle nøgleværdi-par på tidspunktet for array-erklæringen.

#!/bin/bash

#Erklære en associativ matrixvariabel uden værdi

erklære -EN medarbejder

#Tildel værdi separat ved at definere indekset

medarbejder [ 'id' ] = '78564'

medarbejder [ 'navn' ] = 'Skuespillere til rådighed'

medarbejder [ 'stolpe' ] = 'DIREKTØR'

medarbejder [ 'løn' ] = 300.000

#Udskriv to værdier af arrayet

ekko 'Medarbejder-ID: ${employee[id]} '

ekko 'Ansattes navn: ${employee[name]} '

#Erklære en associativ matrix med værdier

erklære -EN Rute = ( [ kode ] = 'CSE-206' [ navn ] = 'Objektorienteret programmering' [ kredit_time ] = 2.0 )

#Tilføj ny linje

ekko

#Udskriv to matrixværdier af den anden matrix

ekko 'Kursusnavn: ${kursus[navn]} '

ekko 'Kredittime: ${course[credit_hour]} '

Produktion :

Følgende output vises efter eksekvering af scriptet. De særlige værdier for det associative array udskrives her ved at nævne nøgle- eller indeksværdien:

  s3

Gå til toppen

Tæl matrixværdierne

Metoden til at tælle de samlede elementer i det numeriske array og det associative array er vist i følgende script:

#!/bin/bash

#Deklarer et numerisk array

erklære -en navne = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' ) ;

ekko 'Længden af ​​det numeriske array er ${#names[@]} '

#Erklærer et associativt array

erklære -EN Rute = ( [ kode ] = 'CSE-206' [ navn ] = 'Objektorienteret programmering' [ kredit_time ] = 2.0 )

ekko 'Længden af ​​det associative array er ${#kursus[@]} '

Produktion :

Følgende output vises efter eksekvering af scriptet. Arraylængden af ​​de numeriske og associative arrays udskrives her:

  s4

Gå til toppen

Læs Array Values ​​by Loop

Metoden til at læse alle værdier af et numerisk array og et associativt array ved hjælp af 'for'-løkken er vist i følgende script:

#!/bin/bash

#Deklarer et numerisk array

erklære -en bøger = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash hurtigt' )

#Udskriv de numeriske matrixværdier

ekko 'Numeriske matrixværdier er:'

til i i ' ${bøger[@]} '

gør

ekko ' $in '

Færdig

ekko

#Erklære en associativ matrix med værdier

erklære -EN kunder = (

[ id ] = 'H-5623'

[ navn ] = 'Hr. Ahnaf'

[ adresse ] = '6/A, Dhanmondi, Dhaka.'

[ telefon ] = '+8801975642312' )

#Udskriv de associative matrixværdier

ekko 'Associative matrixværdier er:'

til k i ' ${!klienter[@]} '

gør

ekko ' $k => ${clients[$k]} '

Færdig

Produktion :

Følgende output vises efter eksekvering af scriptet. Her udskrives værdierne for det numeriske array og nøgleværdiparrene i det associative array i outputtet:

  p5

Gå til toppen

Læs den særlige række af værdier for arrayet

Array-værdierne for det bestemte område af indeksene er vist i følgende script. I scriptet er et numerisk array af fire elementer defineret. To matrixværdier fra det andet indeks af matrixen udskrives senere.

#!/bin/bash

#Deklarer et numerisk array

erklære -en kager = ( 'Chokoladekage' 'Vaniljekage' 'Red Velvet Cake' 'jordbærkage' )

#Udskriv de bestemte matrixværdier

ekko 'Det andet og tredje element i matrixværdierne er:'

printf '%s\n' ' ${kager[@]:1:2} '

Produktion :

Følgende output vises efter eksekvering af scriptet. Den anden og tredje værdi af arrayet er 'Vanilla Cake' og 'Red Velvet Cake', som er udskrevet i outputtet:

  s6

Gå til toppen

Indsæt Array-værdien

Metoden til at tilføje flere værdier i slutningen af ​​arrayet er vist i følgende script. Hovedarrayet, som er '$books', indeholder tre elementer, og to elementer tilføjes i slutningen af ​​'$books'-arrayet.

#!/bin/bash

#Deklarer et numerisk array

erklære -en bøger = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash hurtigt' )

#Udskriv matrixværdierne før indsættelse

ekko 'Matrixværdier:'

printf '%s\n' ' ${bøger[@]} '

ekko

bøger = ( ' ${bøger[@]} ' 'Linux Command Line og Shell Scripting Bible' 'Advanced Bash Scripting Guide af Mendel Cooper' )

#Udskriv matrixværdierne efter indsættelse

ekko 'Matrixværdier efter indsættelse af to værdier:'

printf '%s\n' ' ${bøger[@]} '

Produktion :

Følgende output vises efter eksekvering af scriptet. Matrixværdierne før og efter indsættelse af nye værdier udskrives i outputtet:

  s7

Gå til toppen

Læs filindholdet ind i arrayet

Opret en tekstfil med navnet 'fruits.txt' med følgende indhold for at teste scriptet i dette eksempel:

frugter.txt

Mango

Jackfrugt

Ananas

orange

Banan

I det følgende script er indholdet af en fil gemt i et array med navnet '$data'. Her er hver linje i filen gemt som hvert element i arrayet. Derefter udskrives matrixværdierne.

#!/bin/bash

#Læs filnavnet fra brugeren

Læs -s 'Indtast filnavnet:' filnavn

hvis [ -f $filnavn ]

derefter

#Læs filindholdet i et array'

data = ( ` kat ' $filnavn ' ` )

ekko 'Indholdet af filen er angivet nedenfor:'

#Læs filen linje for linje

til linje i ' ${data[@]} '

gør

ekko $line

Færdig

være

Produktion :

Følgende output vises efter eksekvering af scriptet. Outputtet, der vises af 'cat'-kommandoen og outputtet af scriptet, er ens, fordi den samme fil tilgås af 'cat'-kommandoen og scriptet:

  s8

Gå til toppen

Kombiner matrixværdierne

Et nyt array oprettes ved at kombinere værdierne af flere arrays. I det følgende script er to numeriske arrays af strenge defineret. Derefter oprettes et nyt array ved at kombinere værdierne af disse arrays.

#!/bin/bash

#Deklarer det første array

erklære -en navneliste 1 = ( 'Michael' 'David' 'Alexander' 'Thomas' )

ekko 'De første matrixværdier er:'

printf '%s,' ${nameList1[@]}

ekko

#Deklarer det andet array

erklære -en navneliste 2 = ( 'Robert' 'Richard' )

ekko 'Den anden matrixværdier er:'

printf '%s,' ${nameList2[@]}

ekko

#Opret et nyt array ved at kombinere to arrays

kombineret_array = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

ekko 'De kombinerede matrixværdier er:'

printf '%s,' ${combined_array[@]}

ekko

Produktion :

Følgende output vises efter eksekvering af scriptet. Her udskrives værdierne for tre arrays i outputtet. Det tredje array indeholder alle værdier af det første og det andet array:

  s9

Gå til toppen

Rediger matrixværdierne

Metoden til at opdatere en eller flere matrixværdier ved at nævne indekset er vist i følgende script:

#!/bin/bash

#Deklarer det første array

erklære -en navneliste = ( 'Michael' 'David' 'Alexander' 'Thomas' )

ekko 'Matrixværdier:'

printf '%s,' ${nameList[@]}

ekko

#Opdater den 2. værdi af arrayet

navneliste [ 1 ] = 'Robert'

ekko 'Matrixværdier efter opdatering:'

printf '%s,' ${nameList[@]}

ekko

Produktion :

Følgende output vises efter eksekvering af scriptet. Værdierne for hovedarrayet og de opdaterede arrays udskrives i outputtet:

  s10

Fjern matrixværdierne

Kommandoen 'unset' bruges til at fjerne det bestemte element eller alle elementer i arrayet. I det følgende script fjernes det andet element i arrayet.

#!/bin/bash

#Deklarer et numerisk array

erklære -en bøger = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lær Bash hurtigt' )

#Udskriv matrixværdierne før fjernelse

ekko 'Matrixværdier:'

printf '%s\n' ' ${bøger[@]} '

ekko

#Fjern det 2. element

deaktiveret bøger [ 1 ]

#Udskriv matrixværdierne efter fjernelse

ekko 'Matrixværdier efter fjernelse af den 2. værdi:'

printf '%s\n' ' ${bøger[@]} '

Produktion :

Følgende output vises efter eksekvering af scriptet. Værdierne for hovedarrayet og matrixværdierne efter fjernelse af én værdi udskrives i outputtet:

  s11

Gå til toppen

Søg og erstat matrixværdierne

I det følgende script erstattes den særlige værdi af arrayet med en anden værdi, hvis søgeværdien, der er defineret i mønsteret, matches med en hvilken som helst værdi af arrayet '$names'.

#!/bin/bash

#Deklarer det første array

erklære -en navne = ( 'Michael' 'David' 'Alexander' 'Thomas' )

#Udskriv de originale matrixværdier

ekko 'Originale matrixværdier:'

printf '%s\n' ' ${names[@]} '

#Generer streng efter udskiftning af matrixværdierne

updated_array = ${names[@]/Alexander/Richard}

#Udskriv matrixværdierne efter udskiftning

ekko 'Matrixværdier efter erstatning:'

printf '%s\n' ' ${updated_array[@]} '

Produktion :

Følgende output vises efter eksekvering af scriptet. Værdierne for hovedarrayet og matrixværdierne efter udskiftning af en værdi udskrives i outputtet:

  s12

Gå til toppen

Brug et array som et funktionsargument

I det følgende script sendes en arrayvariabel som funktionsargumentet, og værdierne for det array udskrives senere.

#!/bin/bash

#Deklarer en matrix af tal

erklære -en tal = ( 10 6 Fire, fem 13 8 )

#Definer en funktion, der tager en argumentværdi

func ( )

{

#Læs det første argument

tal = $1

#Udskriv matrixværdierne

ekko 'Matrixværdier:'

printf '%d\n' ' ${numbers[@]} '

}

#Kald funktionen med arrayet som argument

func ' ${numbers[@]} '

Produktion :

Følgende output vises efter eksekvering af scriptet:

  s13

Gå til toppen

Returner et array fra funktionen

I det følgende script kaldes funktionen med fire numeriske argumenter. Et array oprettes med argumentværdierne, og det array returneres fra funktionen til kalderen.

#!/bin/bash

#Definer en funktion, der læser fire argumentværdier

func ( )

{

#Læs argumentværdierne

tal = ( $1 $2 $3 $4 )

#Returner arrayet

ekko ' ${numbers[@]} '

}

#Kald funktionen med tre argumenter

return_val =$ ( func 78 Fire, fem 90 23 )

#Gem returværdien i et array

Læs -en på en <<< $return_val

#Udskriv værdierne for det returnerede array

ekko 'Værdierne for arrayet er:'

til i i ' ${num[@]} '

gør

ekko ' $in '

Færdig

Produktion :

Følgende output vises efter eksekvering af scriptet:

Gå til toppen

Gør arrayet tomt

Følgende script viser metoden til at gøre et array tomt ved hjælp af kommandoen 'unset'. Det samlede antal arrayværdier udskrives før og efter at arrayet er tomt.

#!/bin/bash

#Deklarer en række tal

erklære -en tal = ( 10 6 Fire, fem 13 80 )

ekko 'Antal matrixværdier: ${#numbers[@]} '

#Gør arrayet tomt

deaktiveret tal

ekko 'Antal matrixværdier efter at have gjort matrix tom: ${#numbers[@]} '

Produktion :

Følgende output vises efter eksekvering af scriptet. Antallet af elementer i arrayet blev 0 efter at have gjort arrayet tomt:

  s15

Gå til toppen

Konklusion

Forskellige metoder til at erklære, få adgang til, ændre og fjerne array-variablerne i Bash-scriptet er vist i denne tutorial ved hjælp af 15 enkle eksempler. Vi håber, at denne tutorial vil hjælpe Bash-brugerne til at kende brugen af ​​Bash-array i detaljer.