Gegevens manipuleren en beheren met Bash Array

Gegevens Manipuleren En Beheren Met Bash Array



Een arrayvariabele wordt in elke programmeertaal gebruikt om meerdere waarden op te slaan met behulp van een index. De array-index kan een getal of een tekenreeks zijn. De array die de numerieke index bevat, wordt “numerieke array” genoemd en de array die de tekenreekswaarde als index bevat, wordt “associatieve array” genoemd. Zowel numerieke als associatieve arrays kunnen in Bash worden gemaakt. De methoden voor het manipuleren en controleren van de gegevens van de Bash-array worden in deze tutorial gedetailleerd getoond aan de hand van 15 voorbeelden.

Lijst met inhoud:

  1. Definieer een array op index
  2. Definieer een array met meerdere waarden
  3. Definieer een associatieve array
  4. Tel de arraywaarden
  5. Lees de arraywaarden per lus
  6. Lees de specifieke waarden van de array
  7. Voeg de arraywaarden in
  8. Lees de inhoud van een bestand in de array
  9. Combineer de arraywaarden
  10. Wijzig de arraywaarden
  11. Verwijder de arraywaarden
  12. Zoek en vervang de arraywaarden
  13. Gebruik een array als functieargument
  14. Retourneer de array van de functie
  15. Maak de array leeg

Definieer een array op index

De methode voor het declareren van een array door de sequentiële of niet-sequentiële numerieke indexen te vermelden, wordt getoond in het volgende script. Dit type array wordt een numerieke array genoemd. Hier wordt de array “$books” gemaakt door drie opeenvolgende indexen te definiëren en de array “$products” wordt gemaakt door vier niet-sequentiële indexen te definiëren. Alle waarden van beide arrays worden afgedrukt met behulp van de functie “printf”.







#!/bin/bash

#Definieer de array-index in opeenvolgende volgorde

boeken [ 0 ] = 'De bash-shell leren'

boeken [ 1 ] = 'Cybersecurityoperaties met bash'

boeken [ 2 ] = 'Bash Command Line Pro-tips'

echo 'Alle waarden van de eerste array:'

afdrukkenf '%s\n' ' ${boeken[@]} '

#Definieer de array-index in niet-sequentiële volgorde

producten [ 10 ] = 'Pen'

producten [ 5 ] = 'Potlood'

producten [ 9 ] = 'Rular'

producten [ 4 ] = 'A4-formaat papier'

echo

echo 'Alle waarden van de tweede array:'

afdrukkenf '%s\n' ' ${producten[@]} '

Uitvoer :



De volgende uitvoer verschijnt na het uitvoeren van het script. De waarden van beide arrays worden in de uitvoer afgedrukt. De indexvolgorde wordt gehandhaafd op het moment van afdrukken voor de reeks niet-sequentiële indexen:



  p1





Ga naar boven

Definieer een array met meerdere waarden

Een numerieke array met meerdere waarden kan worden gedeclareerd met behulp van de opdracht “declare” met de optie -a of zonder de opdracht “declare” te gebruiken. In het volgende script wordt de eerste array gedeclareerd met behulp van de opdracht “declare” en wordt de tweede array gemaakt zonder de opdracht “declare” te gebruiken.



#!/bin/bash

#Declareer een numerieke array met het trefwoord 'declare'

verklaren -A namen = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' )

#Druk de arraywaarden af

echo 'Alle waarden van de eerste array:'

afdrukkenf '%s\n' ' ${namen[@]} '

#Declareer een numerieke array zonder het trefwoord 'declare'

boeken = ( 'Shell-scripting-tutorials' 'Bish Bash Bosh!' 'Leer Bash snel' )

#Nieuwe regel toevoegen

echo

#Druk de arraywaarden af

echo 'Alle waarden van de tweede array:'

afdrukkenf '%s\n' ' ${boeken[@]} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De waarden van beide arrays worden hier afgedrukt:

  p2

Ga naar boven

Definieer een associatieve array

De array die de tekenreekswaarde als index bevat, wordt een associatieve array genoemd. De optie -A wordt gebruikt met de opdracht “declare” in Bash om een ​​associatieve Bash-array te maken. In het volgende script wordt de eerste associatieve array gedeclareerd door de indexen afzonderlijk te vermelden en wordt de tweede array gedeclareerd door alle sleutelwaardeparen te vermelden op het moment van de arraydeclaratie.

#!/bin/bash

#Declareer een associatieve arrayvariabele zonder waarde

verklaren -A medewerker

#Wijs waarde afzonderlijk toe door de index te definiëren

medewerker [ 'ID kaart' ] = '78564'

medewerker [ 'naam' ] = 'Acteurs beschikbaar'

medewerker [ 'na' ] = 'DIRECTEUR'

medewerker [ 'salaris' ] = 300000

#Print twee waarden van de array

echo 'Werknemer-ID: ${werknemer[id]} '

echo 'Naam werknemer: ${werknemer[naam]} '

#Declareer een associatieve array met waarden

verklaren -A cursus = ( [ code ] = 'CSE-206' [ naam ] = 'Object georiënteerd programmeren' [ krediet uur ] = 2.0 )

#Nieuwe regel toevoegen

echo

#Print twee arraywaarden van de tweede array

echo 'Cursus naam: ${cursus[naam]} '

echo 'Krediet uur: ${cursus[credit_hour]} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De specifieke waarden van de associatieve array worden hier afgedrukt door de sleutel- of indexwaarde te vermelden:

  p3

Ga naar boven

Tel de arraywaarden

De methode voor het tellen van het totaal aantal elementen van de numerieke array en de associatieve array wordt weergegeven in het volgende script:

#!/bin/bash

#Declareer een numerieke array

verklaren -A namen = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' ) ;

echo 'De lengte van de numerieke array is ${#namen[@]} '

#Declareer een associatieve array

verklaren -A cursus = ( [ code ] = 'CSE-206' [ naam ] = 'Object georiënteerd programmeren' [ krediet uur ] = 2.0 )

echo 'De lengte van de associatieve array is ${#cursus[@]} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De arraylengte van de numerieke en associatieve arrays wordt hier afgedrukt:

  p4

Ga naar boven

Lees de arraywaarden per lus

De methode voor het lezen van alle waarden van een numerieke array en een associatieve array met behulp van de “for”-lus wordt weergegeven in het volgende script:

#!/bin/bash

#Declareer een numerieke array

verklaren -A boeken = ( 'Shell-scripting-tutorials' 'Bish Bash Bosh!' 'Leer Bash snel' )

#Druk de numerieke arraywaarden af

echo 'Numerieke arraywaarden zijn:'

voor in in ' ${boeken[@]} '

Doen

echo ' $in '

klaar

echo

#Declareer een associatieve array met waarden

verklaren -A klanten = (

[ ID kaart ] = 'H-5623'

[ naam ] = 'Dhr. Ahnaf'

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

[ telefoon ] = '+8801975642312' )

#Druk de associatieve arraywaarden af

echo 'Associatieve arraywaarden zijn:'

voor k in ' ${!klanten[@]} '

Doen

echo ' $k => ${klanten[$k]} '

klaar

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. Hier worden de waarden van de numerieke array en de sleutelwaardeparen van de associatieve array in de uitvoer afgedrukt:

  p5

Ga naar boven

Lees het specifieke waardenbereik van de array

De arraywaarden van het specifieke bereik van de indexen worden weergegeven in het volgende script. In het script wordt een numerieke array van vier elementen gedefinieerd. Twee arraywaarden uit de tweede index van de array worden later afgedrukt.

#!/bin/bash

#Declareer een numerieke array

verklaren -A taarten = ( 'Chocoladetaart' 'Vanille cake' 'Rode fluweeltaart' 'aardbeientaart' )

#Print de specifieke arraywaarden

echo 'De 2e en 3e elementen van de arraywaarden zijn:'

afdrukkenf '%s\n' ' ${taarten[@]:1:2} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De tweede en derde waarden van de array zijn “Vanilla Cake” en “Red Velvet Cake” die in de uitvoer worden afgedrukt:

  p6

Ga naar boven

Voeg de arraywaardens in

De methode voor het toevoegen van meerdere waarden aan het einde van de array wordt weergegeven in het volgende script. De hoofdarray, die “$books” is, bevat drie elementen en twee elementen worden toegevoegd aan het einde van de array “$books”.

#!/bin/bash

#Declareer een numerieke array

verklaren -A boeken = ( 'Shell-scripting-tutorials' 'Bish Bash Bosh!' 'Leer Bash snel' )

#Druk de arraywaarden af ​​voordat u deze invoegt

echo 'Matrixwaarden:'

afdrukkenf '%s\n' ' ${boeken[@]} '

echo

boeken = ( ' ${boeken[@]} ' 'Linux-opdrachtregel en Shell Scripting Bible' 'Geavanceerde Bash-scriptgids door Mendel Cooper' )

#Druk de arraywaarden af ​​na het invoegen

echo 'Matrixwaarden na het invoegen van twee waarden:'

afdrukkenf '%s\n' ' ${boeken[@]} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De arraywaarden voor en na het invoegen van nieuwe waarden worden in de uitvoer afgedrukt:

  p7

Ga naar boven

Lees de bestandsinhoud in de array

Maak een tekstbestand met de naam “fruits.txt” met de volgende inhoud om het script van dit voorbeeld te testen:

fruit.txt

Mango

Jackfruit

Ananas

Oranje

Banaan

In het volgende script wordt de inhoud van een bestand opgeslagen in een array met de naam “$data”. Hier wordt elke regel van het bestand opgeslagen als elk element van de array. Vervolgens worden de arraywaarden afgedrukt.

#!/bin/bash

#Lees de bestandsnaam van de gebruiker

lezen -P 'Voer de bestandsnaam in:' bestandsnaam

als [ -F $bestandsnaam ]

Dan

#Lees de bestandsinhoud in een array'

gegevens = ( ` kat ' $bestandsnaam ' ` )

echo 'De inhoud van het bestand vindt u hieronder:'

#Lees het bestand regel voor regel

voor lijn in ' ${gegevens[@]} '

Doen

echo $ lijn

klaar

zijn

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De uitvoer die wordt weergegeven door de opdracht “cat” en de uitvoer van het script zijn vergelijkbaar omdat hetzelfde bestand wordt geopend door de opdracht “cat” en het script:

  p8

Ga naar boven

Combineer de arraywaarden

Er wordt een nieuwe array gemaakt door de waarden van meerdere arrays te combineren. In het volgende script worden twee numerieke reeksen strings gedefinieerd. Vervolgens wordt een nieuwe array gemaakt door de waarden van deze arrays te combineren.

#!/bin/bash

#Declareer de eerste array

verklaren -A naamLijst1 = ( 'Michael' 'David' 'Alexander' 'Thomas' )

echo 'De eerste arraywaarden zijn:'

afdrukkenf '%S, ' ${naamLijst1[@]}

echo

#Declareer de tweede array

verklaren -A naamLijst2 = ( 'Robert' 'Richard' )

echo 'De tweede arraywaarden zijn:'

afdrukkenf '%S, ' ${naamLijst2[@]}

echo

#Maak een nieuwe array door twee arrays te combineren

gecombineerde_array = ( ' ${naamLijst1[@]} ' ' ${naamLijst2[@]} ' )

echo 'De gecombineerde arraywaarden zijn:'

afdrukkenf '%S, ' ${gecombineerde_array[@]}

echo

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. Hier worden de waarden van drie arrays in de uitvoer afgedrukt. De derde array bevat alle waarden van de eerste en de tweede array:

  p9

Ga naar boven

Wijzig de arraywaarden

De methode voor het bijwerken van een of meer arraywaarden door de index te vermelden, wordt weergegeven in het volgende script:

#!/bin/bash

#Declareer de eerste array

verklaren -A namenlijst = ( 'Michaël' 'David' 'Alexander' 'Thomas' )

echo 'Matrixwaarden:'

afdrukkenf '%S, ' ${naamLijst[@]}

echo

#Update de tweede waarde van de array

namenlijst [ 1 ] = 'Robert'

echo 'Arraywaarden na update:'

afdrukkenf '%S, ' ${naamLijst[@]}

echo

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De waarden van de hoofdarray en de bijgewerkte arrays worden in de uitvoer afgedrukt:

  p10

Verwijder de arraywaarden

Het commando “unset” wordt gebruikt om het specifieke element of alle elementen van de array te verwijderen. In het volgende script wordt het tweede element van de array verwijderd.

#!/bin/bash

#Declareer een numerieke array

verklaren -A boeken = ( 'Shell-scripting-tutorials' 'Bish Bash Bosh!' 'Leer Bash snel' )

#Druk de arraywaarden af ​​voordat u deze verwijdert

echo 'Matrixwaarden:'

afdrukkenf '%s\n' ' ${boeken[@]} '

echo

#Verwijder het 2e element

uitgeschakeld boeken [ 1 ]

#Druk de arraywaarden af ​​na verwijdering

echo 'Arraywaarden na het verwijderen van de tweede waarde:'

afdrukkenf '%s\n' ' ${boeken[@]} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De waarden van de hoofdarray en de arraywaarden na het verwijderen van één waarde worden in de uitvoer afgedrukt:

  p11

Ga naar boven

Zoek en vervang de arraywaarden

In het volgende script wordt de specifieke waarde van de array vervangen door een andere waarde als de zoekwaarde die in het patroon is gedefinieerd, overeenkomt met een waarde van de array “$names”.

#!/bin/bash

#Declareer de eerste array

verklaren -A namen = ( 'Michael' 'David' 'Alexander' 'Thomas' )

#Druk de originele arraywaarden af

echo 'Originele arraywaarden:'

afdrukkenf '%s\n' ' ${namen[@]} '

#Genereer een tekenreeks na het vervangen van de arraywaarden

bijgewerkte_array = ${namen[@]/Alexander/Richard}

#Druk de arraywaarden af ​​na vervanging

echo 'Matrixwaarden na vervangen:'

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

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. De waarden van de hoofdarray en de arraywaarden na het vervangen van een waarde worden in de uitvoer afgedrukt:

  p12

Ga naar boven

Gebruik een array als functieargument

In het volgende script wordt een arrayvariabele doorgegeven als functieargument en de waarden van die array worden later afgedrukt.

#!/bin/bash

#Declareer een reeks getallen

verklaren -A cijfers = ( 10 6 Vier vijf 13 8 )

#Definieer een functie die een argumentwaarde aanneemt

func ( )

{

#Lees het eerste argument

cijfers = $ 1

#Druk de arraywaarden af

echo 'Matrixwaarden:'

afdrukkenf '%d\n' ' ${cijfers[@]} '

}

#Roep de functie aan met de array als argument

func ' ${cijfers[@]} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script:

  p13

Ga naar boven

Retourneert een array uit de functie

In het volgende script wordt de functie aangeroepen met vier numerieke argumenten. Er wordt een array gemaakt met de argumentwaarden en die array wordt door de functie geretourneerd naar de aanroeper.

#!/bin/bash

#Definieer een functie die vier argumentwaarden leest

func ( )

{

#Lees de argumentwaarden

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

#Retourneer de array

echo ' ${cijfers[@]} '

}

#Roep de functie aan met drie argumenten

return_val =$ ( func 78 Vier vijf 90 23 )

#Sla de geretourneerde waarde op in een array

lezen -A op een <<< $return_val

#Print de waarden van de geretourneerde array

echo 'De waarden van de array zijn:'

voor in in ' ${num[@]} '

Doen

echo ' $in '

klaar

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script:

Ga naar boven

Maak de array leeg

Het volgende script toont de methode om een ​​array leeg te maken met behulp van de opdracht “unset”. Het totale aantal arraywaarden wordt afgedrukt voor en na het leegmaken van de array.

#!/bin/bash

#Declareer een reeks getallen

verklaren -A cijfers = ( 10 6 Vier vijf 13 80 )

echo 'Aantallen arraywaarden: ${#nummers[@]} '

#Maak de array leeg

uitgeschakeld cijfers

echo 'Aantal arraywaarden na het leegmaken van de array: ${#nummers[@]} '

Uitvoer :

De volgende uitvoer verschijnt na het uitvoeren van het script. Het aantal elementen van de array werd 0 nadat de array leeg was gemaakt:

  p15

Ga naar boven

Conclusie

Verschillende methoden voor het declareren, benaderen, wijzigen en verwijderen van de arrayvariabelen in het Bash-script worden in deze tutorial getoond aan de hand van 15 eenvoudige voorbeelden. We hopen dat deze tutorial de Bash-gebruikers zal helpen het gebruik van de Bash-array in detail te leren kennen.