- Definer et array efter indeks
- Definer en matrix med flere værdier
- Definer et associativt array
- Tæl matrixværdierne
- Læs Array Values by Loop
- Læs de særlige værdier af arrayet
- Indsæt matrixværdierne
- Læs et filindhold ind i arrayet
- Kombiner matrixværdierne
- Rediger matrixværdierne
- Fjern matrixværdierne
- Søg og erstat matrixværdierne
- Brug et array som et funktionsargument
- Returner arrayet fra funktionen
- 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:
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:
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:
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:
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:
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:
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:
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
MangoJackfrugt
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:
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:
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:
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:
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:
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:
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ø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:
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.