Hur man manipulerar och kontrollerar data med Bash Array

Hur Man Manipulerar Och Kontrollerar Data Med Bash Array



En arrayvariabel används i alla programmeringsspråk för att lagra flera värden med hjälp av ett index. Arrayindexet kan vara ett tal eller en sträng. Arrayen som innehåller det numeriska indexet kallas 'numerisk array' och arrayen som innehåller strängvärdet som index kallas 'associativ array'. Både numeriska och associativa arrayer kan skapas i Bash. Metoderna för att manipulera och kontrollera data i Bash-arrayen visas i detalj med hjälp av 15 exempel i denna handledning.

Innehållsförteckning:

  1. Definiera en Array efter Index
  2. Definiera en matris med flera värden
  3. Definiera en associativ array
  4. Räkna matrisvärdena
  5. Läs Array Values ​​by Loop
  6. Läs Arrayens särskilda värden
  7. Infoga Array-värdena
  8. Läs ett filinnehåll i arrayen
  9. Kombinera matrisvärdena
  10. Ändra Array-värdena
  11. Ta bort Array-värdena
  12. Sök och ersätt matrisvärdena
  13. Använd en Array som ett funktionsargument
  14. Returnera arrayen från funktionen
  15. 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:



  p1





Gå till toppen

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:

  p2

Gå till toppen

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:

  p3

Gå till toppen

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:

  p4

Gå till toppen

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:

  p5

Gå till toppen

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:

  s6

Gå till toppen

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:

  p7

Gå till toppen

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

Mango

Jackfrukt

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:

  p8

Gå till toppen

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:

  p9

Gå till toppen

Ä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:

  sid 10

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:

  sid 11

Gå till toppen

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:

  sid 12

Gå till toppen

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:

  sid 13

Gå till toppen

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å till toppen

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:

  s 15

Gå till toppen

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.