Az adatok kezelése és vezérlése a Bash Array segítségével

Az Adatok Kezelese Es Vezerlese A Bash Array Segitsegevel



Egy tömbváltozót bármely programozási nyelvben használnak több érték tárolására index segítségével. A tömb indexe lehet szám vagy karakterlánc. A numerikus indexet tartalmazó tömböt „numerikus tömbnek”, a karakterlánc értéket indexként tartalmazó tömböt pedig „asszociatív tömbnek” nevezik. A Bashban numerikus és asszociatív tömbök is létrehozhatók. A Bash tömb adatainak kezelésének és vezérlésének módszereit 15 példa segítségével mutatjuk be részletesen ebben az oktatóanyagban.

Tartalomlista:

  1. Határozzon meg egy tömböt index alapján
  2. Határozzon meg egy tömböt több értékkel
  3. Határozzon meg egy asszociatív tömböt
  4. Számolja meg a tömbértékeket
  5. Olvassa be a tömbértékeket ciklusonként
  6. Olvassa el a tömb egyedi értékeit
  7. Illessze be a tömbértékeket
  8. Olvasson be egy fájl tartalmat a tömbbe
  9. Kombinálja a tömbértékeket
  10. Módosítsa a tömbértékeket
  11. Távolítsa el a tömbértékeket
  12. Keresse meg és cserélje ki a tömbértékeket
  13. Használjon tömböt függvényargumentumként
  14. Állítsa vissza a tömböt a függvényből
  15. Tedd üressé a tömböt

Határozzon meg egy tömböt index alapján

A tömb deklarálásának módszere a szekvenciális vagy nem szekvenciális numerikus indexek említésével a következő szkriptben látható. Ezt a tömbtípust numerikus tömbnek nevezzük. Itt a „$books” tömb három szekvenciális index meghatározásával, a „$products” tömb pedig négy nem szekvenciális index meghatározásával jön létre. Mindkét tömb összes értéke a „printf” függvény segítségével kerül kinyomtatásra.







#!/bin/bash

#Define array index szekvenciális sorrendben

könyveket [ 0 ] = 'A bash Shell megtanulása'

könyveket [ 1 ] = 'Cybersecurity Ops with bash'

könyveket [ 2 ] = 'Bash Command Line Pro tippek'

visszhang 'Az első tömb összes értéke:'

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

#A tömb indexének meghatározása nem szekvenciális sorrendben

Termékek [ 10 ] = 'Toll'

Termékek [ 5 ] = 'Ceruza'

Termékek [ 9 ] = 'Rular'

Termékek [ 4 ] = 'A4 méretű papír'

visszhang

visszhang 'A második tömb összes értéke:'

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

Kimenet :



A következő kimenet jelenik meg a szkript végrehajtása után. Mindkét tömb értéke a kimenetben kerül nyomtatásra. Az indexsorrend a nem szekvenciális indexek tömbjének nyomtatáskor is megmarad:



  p1





Ugrás a tetejére

Határozzon meg egy tömböt több értékkel

Egy többértékű numerikus tömb deklarálható a „declare” paranccsal az -a kapcsolóval, vagy a „declare” parancs használata nélkül. A következő szkriptben az első tömb a „declare” paranccsal lesz deklarálva, a második tömb pedig a „declare” parancs használata nélkül jön létre.



#!/bin/bash

#Declare egy numerikus tömböt a 'declare' kulcsszóval

kijelent -a neveket = ( 'Michael' 'Dávid' 'Sándor' 'Tamás' 'Robert' 'Richard' )

#Nyomtassa ki a tömbértékeket

visszhang 'Az első tömb összes értéke:'

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

#Declare egy numerikus tömb 'declare' kulcsszó nélkül

könyveket = ( 'Shell Scripting oktatóanyagok' – Bish Bash Bosh! „Tanuld gyorsan Bash-t” )

#Újsor hozzáadása

visszhang

#Nyomtassa ki a tömbértékeket

visszhang 'A második tömb összes értéke:'

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

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. Mindkét tömb értékeit itt nyomtatjuk ki:

  p2

Ugrás a tetejére

Határozzon meg egy asszociatív tömböt

A karakterlánc-értéket indexként tartalmazó tömböt asszociatív tömbnek nevezzük. Az -A kapcsolót a Bash „declare” paranccsal együtt használjuk asszociatív Bash tömb létrehozására. A következő szkriptben az első asszociatív tömb az indexek külön említésével, a második tömb pedig az összes kulcs-érték pár megemlítésével kerül deklarálásra a tömbdeklaráció időpontjában.

#!/bin/bash

#Az asszociatív tömbváltozó deklarálása érték nélkül

kijelent -A munkavállaló

#Az index meghatározásával külön-külön rendelhet értéket

munkavállaló [ 'azonosító' ] = '78564'

munkavállaló [ 'név' ] = 'Elérhető színészek'

munkavállaló [ 'bejegyzés' ] = 'vezérigazgató'

munkavállaló [ 'fizetés' ] = 300 000

#Nyomtassa ki a tömb két értékét

visszhang 'Munkavállalói azonosító: ${alkalmazott[id]} '

visszhang 'Alkalmazott Neve: ${alkalmazott[név]} '

#Deklaráljon egy asszociatív tömböt értékekkel

kijelent -A tanfolyam = ( [ kód ] = 'CSE-206' [ név ] = 'Objektumorientált programozás' [ hitel_óra ] = 2.0 )

#Újsor hozzáadása

visszhang

#Nyomtassa ki a második tömb két tömbértékét

visszhang 'A tantárgy neve: ${course[name]} '

visszhang 'Hitelóra: ${kurzus[kredit_óra]} '

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. Az asszociatív tömb konkrét értékei a kulcs vagy indexérték megemlítésével kerülnek kinyomtatásra:

  p3

Ugrás a tetejére

Számolja meg a tömbértékeket

A numerikus tömb és az asszociatív tömb összes elemének megszámlálásának módja a következő szkriptben látható:

#!/bin/bash

#Numerikus tömb deklarálása

kijelent -a neveket = ( 'Michael' 'Dávid' 'Sándor' 'Tamás' 'Robert' 'Richard' ) ;

visszhang 'A numerikus tömb hossza: ${#names[@]} '

#Asszociatív tömb deklarálása

kijelent -A tanfolyam = ( [ kód ] = 'CSE-206' [ név ] = 'Objektumorientált programozás' [ hitel_óra ] = 2.0 )

visszhang 'Az asszociatív tömb hossza ${#tanfolyam[@]} '

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. A numerikus és asszociatív tömbök tömbhosszát itt nyomtatjuk ki:

  p4

Ugrás a tetejére

Olvassa be a tömbértékeket ciklusonként

A numerikus tömb és az asszociatív tömb összes értékének „for” ciklussal történő kiolvasásának módszere a következő szkriptben látható:

#!/bin/bash

#Numerikus tömb deklarálása

kijelent -a könyveket = ( 'Shell Scripting oktatóanyagok' – Bish Bash Bosh! 'Tanuld gyorsan Bash-t' )

#Nyomtassa ki a numerikus tömb értékeket

visszhang 'A numerikus tömb értékei:'

számára ban ben ban ben ' ${books[@]} '

csináld

visszhang ' $in '

Kész

visszhang

#Deklaráljon egy asszociatív tömböt értékekkel

kijelent -A ügyfelek = (

[ id ] = 'H-5623'

[ név ] = 'Úr. Ahnaf'

[ cím ] = '6/A, Dhanmondi, Dhaka.'

[ telefon ] = „+8801975642312” )

#Nyomtassa ki az asszociatív tömbértékeket

visszhang 'Az asszociatív tömbértékek a következők:

számára k ban ben ' ${!clients[@]} '

csináld

visszhang ' $k => ${kliens[$k]} '

Kész

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. Itt a numerikus tömb értékei és az asszociatív tömb kulcs-érték párjai megjelennek a kimenetben:

  p5

Ugrás a tetejére

Olvassa el a tömb adott értéktartományát

Az indexek adott tartományának tömbértékei a következő szkriptben láthatók. A szkriptben egy négy elemből álló numerikus tömb van definiálva. A tömb második indexéből két tömbértéket később nyomtatunk ki.

#!/bin/bash

#Numerikus tömb deklarálása

kijelent -a sütemények = ( 'Csokoládétorta' 'Vanília torta' 'Vörös bársony torta' 'eper torta' )

#Nyomtassa ki az adott tömbértékeket

visszhang 'A tömbértékek 2. és 3. eleme:'

printf '%s\n' ' ${sütemények[@]:1:2} '

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. A tömb második és harmadik értéke a „Vanília torta” és a „Vörös bársonytorta”, amelyek a kimenetben jelennek meg:

  p6

Ugrás a tetejére

Illessze be a tömbértékeket

A tömb végére több érték hozzáadásának módja a következő szkriptben látható. A fő tömb, amely a „$books”, három elemet tartalmaz, és két elemet adunk hozzá a „$books” tömb végéhez.

#!/bin/bash

#Numerikus tömb deklarálása

kijelent -a könyveket = ( 'Shell Scripting oktatóanyagok' – Bish Bash Bosh! 'Tanuld gyorsan Bash-t' )

#Nyomtassa ki a tömbértékeket beszúrás előtt

visszhang 'Tömbértékek:'

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

visszhang

könyveket = ( ' ${books[@]} ' 'Linux Command Line és Shell Scripting Bible' 'Advanced Bash Scripting Guide, Mendel Cooper' )

#Nyomtassa ki a tömbértékeket a beillesztés után

visszhang 'Tömbértékek két érték beillesztése után:'

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

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. Az új értékek beszúrása előtti és utáni tömbértékek kinyomtatásra kerülnek a kimenetben:

  p7

Ugrás a tetejére

Olvassa be a fájl tartalmát a tömbbe

A példa szkriptjének teszteléséhez hozzon létre egy „fruits.txt” nevű szövegfájlt a következő tartalommal:

gyümölcsök.txt

Mangó

Jackfruit

Ananász

narancs

Banán

A következő szkriptben egy fájl tartalma egy „$data” nevű tömbben van tárolva. Itt a fájl minden sora a tömb minden elemeként kerül tárolásra. Ezután a tömbértékek kinyomtatásra kerülnek.

#!/bin/bash

#Olvasd be a fájlnevet a felhasználótól

olvas -o 'Írja be a fájlnevet:' fájl név

ha [ -f $fájlnév ]

akkor

#Olvasd be a fájl tartalmát egy tömbbe'

adat = ( ` macska ' $fájlnév ' ` )

visszhang 'A fájl tartalma alább látható:'

# Olvassa el a fájlt soronként

számára vonal ban ben ' ${data[@]} '

csináld

visszhang $sor

Kész

lenni

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. A „cat” parancs által megjelenített kimenet és a szkript kimenete hasonló, mivel ugyanazt a fájlt éri el a „cat” parancs és a szkript:

  8. o

Ugrás a tetejére

Kombinálja a tömbértékeket

Több tömb értékeinek kombinálásával új tömb jön létre. A következő szkriptben két karakterlánc numerikus tömb van definiálva. Ezután egy új tömb jön létre ezen tömbök értékeinek kombinálásával.

#!/bin/bash

#Deklarálja az első tömböt

kijelent -a névlista1 = ( 'Michael' 'Dávid' 'Sándor' 'Tamás' )

visszhang 'Az első tömbértékek a következők:'

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

visszhang

#Deklarálja a második tömböt

kijelent -a névLista2 = ( 'Robert' 'Richard' )

visszhang 'A második tömbértékek a következők:

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

visszhang

#Hozzon létre egy új tömböt két tömb kombinálásával

kombinált_tömb = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

visszhang 'A kombinált tömbértékek a következők:

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

visszhang

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. Itt három tömb értéke jelenik meg a kimenetben. A harmadik tömb tartalmazza az első és a második tömb összes értékét:

  9. o

Ugrás a tetejére

Módosítsa a tömbértékeket

Egy vagy több tömbérték frissítésének módja az index megemlítésével a következő szkriptben látható:

#!/bin/bash

#Deklarálja az első tömböt

kijelent -a névlista = ( 'Michael' 'Dávid' 'Sándor' 'Tamás' )

visszhang 'Tömbértékek:'

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

visszhang

#Frissítse a tömb 2. értékét

névlista [ 1 ] = 'Robert'

visszhang 'Tömbértékek frissítés után:'

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

visszhang

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. A fő tömb és a frissített tömb értékei a kimenetben jelennek meg:

  10. o

Távolítsa el a tömbértékeket

Az „unset” parancs az adott elem vagy a tömb összes elemének eltávolítására szolgál. A következő szkriptben a tömb második eleme eltávolításra kerül.

#!/bin/bash

#Numerikus tömb deklarálása

kijelent -a könyveket = ( 'Shell Scripting oktatóanyagok' – Bish Bash Bosh! 'Tanuld gyorsan Bash-t' )

#Eltávolítás előtt nyomtassa ki a tömbértékeket

visszhang 'Tömbértékek:'

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

visszhang

#Távolítsa el a 2. elemet

nincs beállítva könyveket [ 1 ]

#Az eltávolítás után nyomtassa ki a tömbértékeket

visszhang 'Tömbértékek a 2. érték eltávolítása után:'

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

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. A fő tömb értékei és a tömbértékek egy érték eltávolítása után megjelennek a kimenetben:

  p11

Ugrás a tetejére

Keresse meg és cserélje ki a tömbértékeket

A következő szkriptben a tömb adott értéke lecserélődik egy másik értékre, ha a mintában definiált keresési érték megfelel a „$names” tömb bármely értékének.

#!/bin/bash

#Deklarálja az első tömböt

kijelent -a neveket = ( 'Michael' 'Dávid' 'Sándor' 'Tamás' )

#Nyomtassa ki az eredeti tömbértékeket

visszhang 'Eredeti tömbértékek:'

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

# Generáljon karakterláncot a tömbértékek cseréje után

frissített_tömb = ${names[@]/Alexander/Richard}

#Nyomtassa ki a tömbértékeket a csere után

visszhang 'Tömbértékek csere után:'

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

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. A fő tömb értékei és a tömbértékek egy érték cseréje után megjelennek a kimenetben:

  p12

Ugrás a tetejére

Használjon tömböt függvényargumentumként

A következő szkriptben egy tömbváltozó kerül átadásra függvény argumentumként, és a tömb értékeit később nyomtatja ki.

#!/bin/bash

#Deklaráljon egy számtömböt

kijelent -a számok = ( 10 6 Négy öt 13 8 )

#Határozzon meg egy függvényt, amely argumentumértéket vesz fel

func ( )

{

#Olvassa el az első érvet

számok = 1 dollár

#Nyomtassa ki a tömbértékeket

visszhang 'Tömbértékek:'

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

}

#Hívja meg a függvényt argumentumként a tömbbel

func ' ${numbers[@]} '

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után:

  p13

Ugrás a tetejére

Tömb visszaadása a függvényből

A következő szkriptben a függvényt négy numerikus argumentummal hívják meg. Egy tömb jön létre az argumentumértékekkel, és ez a tömb visszakerül a függvénytől a hívóhoz.

#!/bin/bash

#Határozzon meg egy függvényt, amely négy argumentumot olvas be

func ( )

{

#Olvassa el az argumentumértékeket

számok = ( 1 dollár 2 dollár 3 dollár 4 dollár )

#A tömb visszaadása

visszhang ' ${numbers[@]} '

}

#Hívja meg a függvényt három argumentummal

return_val =$ ( func 78 Négy öt 90 23 )

#Tárolja el a visszatérési értéket egy tömbben

olvas -a az egyiken <<< $return_val

#Nyomtassa ki a visszaadott tömb értékeit

visszhang 'A tömb értékei:'

számára ban ben ban ben ' ${num[@]} '

csináld

visszhang ' $in '

Kész

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után:

Ugrás a tetejére

Tedd üressé a tömböt

A következő szkript bemutatja a tömb üressé tételének módját az „unset” paranccsal. A tömbértékek teljes száma a tömb kiürítése előtt és után kerül kinyomtatásra.

#!/bin/bash

#Deklaráljon egy számtömböt

kijelent -a számok = ( 10 6 Négy öt 13 80 )

visszhang 'A tömbértékek száma: ${#számok[@]} '

#Tegye üressé a tömböt

nincs beállítva számok

visszhang 'A tömbértékek száma a tömb kiürítése után: ${#számok[@]} '

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után. A tömb elemeinek száma 0 lett a tömb kiürítése után:

  p15

Ugrás a tetejére

Következtetés

Ez az oktatóanyag 15 egyszerű példán keresztül bemutatja a Bash-szkriptben a tömbváltozók deklarálására, elérésére, módosítására és eltávolítására szolgáló különféle módszereket. Reméljük, hogy ez az oktatóanyag segít a Bash felhasználóknak a Bash tömb használatának részletes megismerésében.