- Definiera en Array efter Index
- Definiera en matris med flera värden
- Definiera en associativ array
- Räkna matrisvärdena
- Läs Array Values by Loop
- Läs Arrayens särskilda värden
- Infoga Array-värdena
- Läs ett filinnehåll i arrayen
- Kombinera matrisvärdena
- Ändra Array-värdena
- Ta bort Array-värdena
- Sök och ersätt matrisvärdena
- Använd en Array som ett funktionsargument
- Returnera arrayen från funktionen
- Gör arrayen tom
Definiera en Array efter Index
Metoden för att deklarera en array genom att nämna de sekventiella eller icke-sekventiella numeriska indexen visas i följande skript. Denna typ av array kallas en numerisk array. Här skapas '$books'-matrisen genom att definiera tre sekventiella index och '$products'-arrayen skapas genom att definiera fyra icke-sekventiella index. Alla värden för båda arrayerna skrivs ut med 'printf'-funktionen.
#!/bin/bash
#Definiera arrayindex i sekventiell ordning
böcker [ 0 ] = 'Learning the bash Shell'
böcker [ 1 ] = 'Cybersäkerhetsoperationer med bash'
böcker [ 2 ] = 'Bash Command Line Pro-tips'
eko 'Alla värden för den första arrayen:'
printf '%s\n' ' ${böcker[@]} '
#Definiera arrayindex i icke-sekventiell ordning
Produkter [ 10 ] = 'Penna'
Produkter [ 5 ] = 'Penna'
Produkter [ 9 ] = 'Rular'
Produkter [ 4 ] = 'A4-papper'
eko
eko 'Alla värden för den andra matrisen:'
printf '%s\n' ' ${products[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. Värdena för båda arrayerna skrivs ut i utdata. Indexordningen bibehålls vid tidpunkten för utskrift för arrayen av icke-sekventiella index:
Definiera en matris med flera värden
En numerisk matris med flera värden kan deklareras med kommandot 'declare' med alternativet -a eller utan att använda kommandot 'declare'. I följande skript deklareras den första matrisen med kommandot 'declare' och den andra matrisen skapas utan att använda kommandot 'declare'.
#!/bin/bash
#Deklarera en numerisk matris med nyckelordet 'declare'
deklarera -a namn = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' )
#Skriv ut matrisvärdena
eko 'Alla värden för den första arrayen:'
printf '%s\n' ' ${names[@]} '
#Deklarera en numerisk matris utan nyckelordet 'declare'
böcker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lär dig Bash snabbt' )
#Lägg till ny rad
eko
#Skriv ut matrisvärdena
eko 'Alla värden för den andra matrisen:'
printf '%s\n' ' ${böcker[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. Värdena för båda arrayerna skrivs ut här:
Definiera en associativ array
Arrayen som innehåller strängvärdet som index kallas en associativ array. Alternativet -A används med kommandot 'declare' i Bash för att skapa en associativ Bash-array. I följande skript deklareras den första associativa arrayen genom att nämna indexen separat och den andra arrayen deklareras genom att nämna alla nyckel-värdepar vid tidpunkten för array-deklarationen.
#!/bin/bash#Deklarera en associativ matrisvariabel utan värde
deklarera -A anställd
#Tilldela värde separat genom att definiera indexet
anställd [ 'id' ] = '78564'
anställd [ 'namn' ] = 'Aktörer tillgängliga'
anställd [ 'posta' ] = 'VD'
anställd [ 'lön' ] = 300 000
#Skriv ut två värden för arrayen
eko 'Anställnings-ID: ${employee[id]} '
eko 'Anställd Namn: ${employee[name]} '
#Deklarera en associativ array med värden
deklarera -A kurs = ( [ koda ] = 'CSE-206' [ namn ] = 'Objektorienterad programmering' [ kredit_timme ] = 2.0 )
#Lägg till ny rad
eko
#Skriv ut två matrisvärden för den andra matrisen
eko 'Kursnamn: ${course[name]} '
eko 'Kredittimme: ${course[credit_hour]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. De särskilda värdena för den associativa matrisen skrivs ut här genom att nämna nyckel- eller indexvärdet:
Räkna matrisvärdena
Metoden för att räkna de totala elementen i den numeriska matrisen och den associativa matrisen visas i följande skript:
#!/bin/bash#Deklarera en numerisk matris
deklarera -a namn = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' ) ;
eko 'Längden på den numeriska matrisen är ${#names[@]} '
#Deklarera en associativ array
deklarera -A kurs = ( [ koda ] = 'CSE-206' [ namn ] = 'Objektorienterad programmering' [ kredit_timme ] = 2.0 )
eko 'Längden på den associativa arrayen är ${#course[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. Matrislängden för de numeriska och associativa matriserna skrivs ut här:
Läs Array Values by Loop
Metoden för att läsa alla värden i en numerisk array och en associativ array med 'for'-loopen visas i följande skript:
#!/bin/bash#Deklarera en numerisk matris
deklarera -a böcker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lär dig Bash snabbt' )
#Skriv ut de numeriska matrisvärdena
eko 'Numeriska matrisvärden är:'
för i i ' ${böcker[@]} '
do
eko ' $in '
Gjort
eko
#Deklarera en associativ array med värden
deklarera -A kunder = (
[ id ] = 'H-5623'
[ namn ] = 'Herr. Ahnaf'
[ adress ] = '6/A, Dhanmondi, Dhaka.'
[ telefon ] = '+8801975642312' )
#Skriv ut de associativa matrisvärdena
eko 'Associativa matrisvärden är:'
för k i ' ${!clients[@]} '
do
eko ' $k => ${clients[$k]} '
Gjort
Produktion :
Följande utdata visas efter exekvering av skriptet. Här skrivs värdena för den numeriska matrisen och nyckel-värdeparen för den associativa matrisen ut i utdata:
Läs Arrayens särskilda värdeintervall
Matrisvärdena för det specifika intervallet för indexen visas i följande skript. I skriptet definieras en numerisk matris med fyra element. Två matrisvärden från det andra indexet i matrisen skrivs ut senare.
#!/bin/bash#Deklarera en numerisk matris
deklarera -a kakor = ( 'Chokladkaka' 'Vaniljtårta' 'Rödsammetstårta' 'jordgubbstårta' )
#Skriv ut de särskilda matrisvärdena
eko 'Det andra och tredje elementet i arrayvärdena är:'
printf '%s\n' ' ${cakes[@]:1:2} '
Produktion :
Följande utdata visas efter exekvering av skriptet. De andra och tredje värdena för arrayen är 'Vanilla Cake' och 'Red Velvet Cake' som skrivs ut i utgången:
Infoga Array Valuess
Metoden för att lägga till flera värden i slutet av arrayen visas i följande skript. Huvudarrayen som är '$books' innehåller tre element och två element läggs till i slutet av '$books'-matrisen.
#!/bin/bash#Deklarera en numerisk matris
deklarera -a böcker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lär dig Bash snabbt' )
#Skriv ut matrisvärdena innan du infogar
eko 'Arrayvärden:'
printf '%s\n' ' ${böcker[@]} '
eko
böcker = ( ' ${böcker[@]} ' 'Linux Command Line and Shell Scripting Bible' 'Advanced Bash Scripting Guide av Mendel Cooper' )
#Skriv ut matrisvärdena efter infogning
eko 'Arrayvärden efter att ha infogat två värden:'
printf '%s\n' ' ${böcker[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. Matrisvärdena före och efter infogning av nya värden skrivs ut i utdata:
Läs filinnehållet i arrayen
Skapa en textfil med namnet 'fruits.txt' med följande innehåll för att testa skriptet i detta exempel:
fruits.txt
MangoJackfrukt
Ananas
Orange
Banan
I följande skript lagras innehållet i en fil i en array som heter '$data'. Här lagras varje rad i filen som varje element i arrayen. Därefter skrivs matrisvärdena ut.
#!/bin/bash#Läs filnamnet från användaren
läsa -s 'Ange filnamnet:' filnamn
om [ -f $filnamn ]
sedan
#Läs filinnehållet i en array'
data = ( ` katt ' $filnamn ' ` )
eko 'Innehållet i filen anges nedan:'
#Läs filen rad för rad
för linje i ' ${data[@]} '
do
eko $line
Gjort
vara
Produktion :
Följande utdata visas efter exekvering av skriptet. Utdata som visas av kommandot 'cat' och utdata från skriptet är liknande eftersom samma fil nås av kommandot 'cat' och skriptet:
Kombinera matrisvärdena
En ny array skapas genom att kombinera värdena för flera arrayer. I följande skript definieras två numeriska arrayer av strängar. Sedan skapas en ny array genom att kombinera värdena för dessa arrayer.
#!/bin/bash#Deklarera den första arrayen
deklarera -a namnlista1 = ( 'Michael' 'David' 'Alexander' 'Thomas' )
eko 'De första arrayvärdena är:'
printf '%s,' ${nameList1[@]}
eko
#Deklarera den andra arrayen
deklarera -a namnlista2 = ( 'Robert' 'Richard' )
eko 'De andra matrisvärdena är:'
printf '%s,' ${nameList2[@]}
eko
#Skapa en ny array genom att kombinera två arrayer
combined_array = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )
eko 'De kombinerade matrisvärdena är:'
printf '%s,' ${combined_array[@]}
eko
Produktion :
Följande utdata visas efter exekvering av skriptet. Här skrivs värdena för tre arrayer ut i utdata. Den tredje matrisen innehåller alla värden för den första och andra matrisen:
Ändra Array-värdena
Metoden för att uppdatera ett eller flera arrayvärden genom att nämna indexet visas i följande skript:
#!/bin/bash#Deklarera den första arrayen
deklarera -a namnlista = ( 'Michael' 'David' 'Alexander' 'Thomas' )
eko 'Arrayvärden:'
printf '%s,' ${nameList[@]}
eko
#Uppdatera det andra värdet för arrayen
namnlista [ 1 ] = 'Robert'
eko 'Arrayvärden efter uppdatering:'
printf '%s,' ${nameList[@]}
eko
Produktion :
Följande utdata visas efter exekvering av skriptet. Värdena för huvudmatrisen och de uppdaterade matriserna skrivs ut i utdata:
Ta bort Array-värdena
Kommandot 'unset' används för att ta bort det specifika elementet eller alla element i arrayen. I följande skript tas det andra elementet i arrayen bort.
#!/bin/bash#Deklarera en numerisk matris
deklarera -a böcker = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Lär dig Bash snabbt' )
#Skriv ut matrisvärdena innan du tar bort
eko 'Arrayvärden:'
printf '%s\n' ' ${böcker[@]} '
eko
#Ta bort det andra elementet
avstängd böcker [ 1 ]
#Skriv ut matrisvärdena efter borttagning
eko 'Arrayvärden efter att ha tagit bort det andra värdet:'
printf '%s\n' ' ${böcker[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. Värdena för huvudmatrisen och matrisvärdena efter att ett värde har tagits bort skrivs ut i utgången:
Sök och ersätt matrisvärdena
I följande skript ersätts det särskilda värdet för arrayen med ett annat värde om sökvärdet som definieras i mönstret matchas med något värde i arrayen '$names'.
#!/bin/bash#Deklarera den första arrayen
deklarera -a namn = ( 'Michael' 'David' 'Alexander' 'Thomas' )
#Skriv ut de ursprungliga matrisvärdena
eko 'Original matrisvärden:'
printf '%s\n' ' ${names[@]} '
#Generera sträng efter att ha ersatt arrayvärdena
updated_array = ${names[@]/Alexander/Richard}
#Skriv ut matrisvärdena efter byte
eko 'Arrayvärden efter ersätt:'
printf '%s\n' ' ${updated_array[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. Värdena för huvudmatrisen och matrisvärdena efter att ha ersatt ett värde skrivs ut i utdata:
Använd en Array som ett funktionsargument
I följande skript skickas en matrisvariabel som funktionsargument och värdena för den matrisen skrivs ut senare.
#!/bin/bash#Deklarera en uppsättning siffror
deklarera -a tal = ( 10 6 Fyra fem 13 8 )
#Definiera en funktion som tar ett argumentvärde
func ( )
{
#Läs det första argumentet
tal = $1
#Skriv ut matrisvärdena
eko 'Arrayvärden:'
printf '%d\n' ' ${numbers[@]} '
}
#Anropa funktionen med arrayen som argument
func ' ${numbers[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet:
Returnera en array från funktionen
I följande skript anropas funktionen med fyra numeriska argument. En matris skapas med argumentvärdena och den matrisen returneras från funktionen till anroparen.
#!/bin/bash#Definiera en funktion som läser fyra argumentvärden
func ( )
{
#Läs argumentvärdena
tal = ( $1 $2 $3 $4 )
# Returnera arrayen
eko ' ${numbers[@]} '
}
#Anropa funktionen med tre argument
return_val =$ ( func 78 Fyra fem 90 23 )
#Lagra returvärdet i en array
läsa -a på ett <<< $return_val
#Skriv ut värdena för den returnerade arrayen
eko 'Värdena för arrayen är:'
för i i ' ${num[@]} '
do
eko ' $in '
Gjort
Produktion :
Följande utdata visas efter exekvering av skriptet:
Gör arrayen tom
Följande skript visar metoden för att göra en array tom med kommandot 'unset'. Det totala antalet matrisvärden skrivs ut före och efter att matrisen har gjorts tom.
#!/bin/bash#Deklarera en matris med siffror
deklarera -a tal = ( 10 6 Fyra fem 13 80 )
eko 'Antal matrisvärden: ${#numbers[@]} '
#Gör arrayen tom
avstängd tal
eko 'Antal matrisvärden efter att ha gjort matrisen tom: ${#numbers[@]} '
Produktion :
Följande utdata visas efter exekvering av skriptet. Antalet element i arrayen blev 0 efter att ha gjort arrayen tom:
Slutsats
Olika metoder för att deklarera, komma åt, ändra och ta bort arrayvariablerna i Bash-skriptet visas i denna handledning med 15 enkla exempel. Vi hoppas att den här handledningen kommer att hjälpa Bash-användarna att känna till användningen av Bash-arrayen i detalj.