Kuidas andmeid Bash Array abil manipuleerida ja juhtida

Kuidas Andmeid Bash Array Abil Manipuleerida Ja Juhtida



Massiivimuutujat kasutatakse igas programmeerimiskeeles mitme väärtuse salvestamiseks indeksi abil. Massiivi indeks võib olla arv või string. Arvindeksit sisaldavat massiivi nimetatakse 'numbrimassiiviks' ja massiivi, mis sisaldab indeksina stringi väärtust, nimetatakse 'assotsiatiivseks massiiviks'. Bashis saab luua nii numbrilisi kui ka assotsiatiivseid massiive. Bashi massiivi andmetega manipuleerimise ja juhtimise meetodeid kirjeldatakse üksikasjalikult, kasutades selles õpetuses 15 näidet.

Sisu loend:

  1. Defineerige massiiv indeksi järgi
  2. Määratlege mitme väärtusega massiiv
  3. Määratlege assotsiatiivne massiiv
  4. Loendage massiivi väärtused
  5. Lugege massiivi väärtusi tsükli järgi
  6. Lugege massiivi konkreetseid väärtusi
  7. Sisestage massiivi väärtused
  8. Lugege massiivi faili sisu
  9. Kombineerige massiivi väärtused
  10. Muutke massiivi väärtusi
  11. Eemaldage massiivi väärtused
  12. Otsige ja asendage massiivi väärtused
  13. Kasutage funktsiooni argumendina massiivi
  14. Taasta massiiv funktsioonist
  15. Tehke massiiv tühjaks

Defineerige massiiv indeksi järgi

Massiivi deklareerimise meetod järjestikuste või mittejärjestikuliste numbriindeksite mainimisega on näidatud järgmises skriptis. Seda tüüpi massiivi nimetatakse numbriliseks massiiviks. Siin luuakse massiiv '$books' kolme järjestikuse indeksi määratlemisega ja massiiv '$products' nelja mittejärjestikuse indeksi määratlemisega. Mõlema massiivi kõik väärtused trükitakse funktsiooni 'printf' abil.







#!/bin/bash

#Määrake massiivi indeks järjestikuses järjekorras

raamatuid [ 0 ] = 'Bash Shelli õppimine'

raamatuid [ 1 ] = 'Küberjulgeoleku operatsioonid bashiga'

raamatuid [ 2 ] = Bash Command Line Pro nõuanded

kaja 'Esimese massiivi kõik väärtused:'

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

#Määrake massiivi indeks mittejärjekorras

tooted [ 10 ] = 'Pliiats'

tooted [ 5 ] = 'Pliiats'

tooted [ 9 ] = 'Rular'

tooted [ 4 ] = 'A4 formaadis paber'

kaja

kaja 'Teise massiivi kõik väärtused:'

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

Väljund :



Pärast skripti täitmist ilmub järgmine väljund. Mõlema massiivi väärtused trükitakse väljundisse. Indeksi järjekorda säilitatakse trükkimise ajal mittejärjestikuliste indeksite massiivi jaoks:



  p1





Mine üles

Määratlege mitme väärtusega massiiv

Mitme väärtusega numbrimassiivi saab deklareerida, kasutades käsku 'declare' koos võtmega -a või ilma käsku 'deklareerimine'. Järgmises skriptis deklareeritakse esimene massiiv käsuga 'deklareerida' ja teine ​​massiiv luuakse ilma käsku 'declare' kasutamata.



#!/bin/bash

#Deklareerige numbriline massiiv märksõnaga 'deklareeri'.

kuulutama -a nimed = ( 'Michael' 'David' 'Aleksander' 'Thomas' 'Robert' 'Richard' )

#Prindi massiivi väärtused

kaja 'Esimese massiivi kõik väärtused:'

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

#Deklareerige numbriline massiiv ilma 'deklareeri' märksõnata

raamatuid = ( 'Shelli skriptimise õpetused' 'Bish Bash Bosh!' 'Õpi Bashi kiiresti' )

#Lisa uus rida

kaja

#Prindi massiivi väärtused

kaja 'Teise massiivi kõik väärtused:'

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

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Mõlema massiivi väärtused trükitakse siia:

  p2

Mine üles

Määratlege assotsiatiivne massiiv

Massiivi, mis sisaldab stringi väärtust indeksina, nimetatakse assotsiatiivseks massiiviks. Suvandit -A kasutatakse Bashis koos käsuga 'declare', et luua assotsiatiivne Bashi massiiv. Järgmises skriptis deklareeritakse esimene assotsiatiivne massiiv, mainides indekseid eraldi ja teine ​​massiiv, mainides kõiki massiivi deklareerimise ajal olevaid võtme-väärtuse paare.

#!/bin/bash

#Assotsiatiivse massiivi muutuja deklareerimine ilma väärtuseta

kuulutama -A töötaja

#Määrake väärtus eraldi, määrates indeksi

töötaja [ 'id' ] = '78564'

töötaja [ 'nimi' ] = 'Näitlejad saadaval'

töötaja [ 'postitus' ] = 'TEGEVDIREKTOR'

töötaja [ 'palk' ] = 300 000

#Prindi kaks massiivi väärtust

kaja 'Töötaja ID: ${töötaja[id]} '

kaja 'Töötaja nimi: ${töötaja[nimi]} '

#Deklareerige väärtustega assotsiatiivne massiiv

kuulutama -A muidugi = ( [ kood ] = 'CSE-206' [ nimi ] = 'Objektorienteeritud programmeerimine' [ krediidi_tund ] = 2.0 )

#Lisa uus rida

kaja

#Trüki teise massiivi kaks massiivi väärtust

kaja 'Kursuse nimi: ${kursus[nimi]} '

kaja 'Krediiditund: ${kursus[krediidi_tund]} '

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Assotsiatiivse massiivi konkreetsed väärtused trükitakse siia, mainides võtme või indeksi väärtust:

  p3

Mine üles

Loendage massiivi väärtused

Arvmassiivi ja assotsiatiivse massiivi koguelementide loendamise meetod on näidatud järgmises skriptis:

#!/bin/bash

#Deklareerige numbriline massiiv

kuulutama -a nimed = ( 'Michael' 'David' 'Aleksander' 'Thomas' 'Robert' 'Richard' ) ;

kaja 'Arvmassiivi pikkus on ${#names[@]} '

#Deklareeri assotsiatiivne massiiv

kuulutama -A muidugi = ( [ kood ] = 'CSE-206' [ nimi ] = 'Objektorienteeritud programmeerimine' [ krediidi_tund ] = 2.0 )

kaja 'Assotsiatiivse massiivi pikkus on ${#kursus[@]} '

Väljund :

Pärast skripti täitmist kuvatakse järgmine väljund. Numbri- ja assotsiatiivsete massiivide massiivi pikkus trükitakse siia:

  p4

Mine üles

Lugege massiivi väärtusi tsükli järgi

Arvmassiivi ja assotsiatiivse massiivi kõigi väärtuste lugemise meetod 'for' tsükli abil on näidatud järgmises skriptis:

#!/bin/bash

#Deklareerige numbriline massiiv

kuulutama -a raamatuid = ( 'Shelli skriptimise õpetused' 'Bish Bash Bosh!' 'Õppige Bashi kiiresti' )

#Prindige numbrilise massiivi väärtused

kaja 'Arvmassiivi väärtused on:'

jaoks sisse sisse ' ${books[@]} '

teha

kaja ' $in '

tehtud

kaja

#Deklareerige väärtustega assotsiatiivne massiiv

kuulutama -A kliendid = (

[ id ] = 'H-5623'

[ nimi ] = 'Härra. Ahnaf'

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

[ telefon ] = '+8801975642312' )

#Prindige assotsiatiivse massiivi väärtused

kaja 'Assotsiatiivsed massiivi väärtused on:'

jaoks k sisse ' ${!kliendid[@]} '

teha

kaja ' $k => ${kliendid[$k]} '

tehtud

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Siin trükitakse väljundisse numbrilise massiivi väärtused ja assotsiatiivse massiivi võtme-väärtuste paarid:

  p5

Mine üles

Lugege massiivi konkreetset väärtusvahemikku

Indekside konkreetse vahemiku massiivi väärtused on näidatud järgmises skriptis. Skriptis on määratletud neljast elemendist koosnev numbriline massiiv. Kaks massiivi väärtust massiivi teisest indeksist trükitakse hiljem.

#!/bin/bash

#Deklareerige numbriline massiiv

kuulutama -a koogid = ( 'Šokolaadikook' 'Vanilje kook' 'Red Velvet Cake' 'maasikakook' )

#Prindige konkreetsed massiivi väärtused

kaja 'Massiivi väärtuste 2. ja 3. element on:'

printf '%s\n' ' ${koogid[@]:1:2} '

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Massiivi teine ​​ja kolmas väärtus on 'Vanilli Cake' ja 'Red Velvet Cake', mis trükitakse väljundisse:

  p6

Mine üles

Sisestage massiivi väärtused

Mitme väärtuse lisamise meetod massiivi lõppu on näidatud järgmises skriptis. Peamine massiiv, mis on “$books”, sisaldab kolme elementi ja kaks elementi lisatakse massiivi “$books” lõppu.

#!/bin/bash

#Deklareerige numbriline massiiv

kuulutama -a raamatuid = ( 'Shelli skriptimise õpetused' 'Bish Bash Bosh!' 'Õppige Bashi kiiresti' )

#Prindi massiivi väärtused enne sisestamist

kaja 'Massiivi väärtused:'

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

kaja

raamatuid = ( ' ${books[@]} ' 'Linuxi käsurida ja Shelli skriptipiibel' Mendel Cooperi täiustatud Bashi skriptimise juhend )

#Prindi massiivi väärtused pärast sisestamist

kaja 'Massiivi väärtused pärast kahe väärtuse sisestamist:'

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

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Massiivi väärtused enne ja pärast uute väärtuste lisamist trükitakse väljundisse:

  lk 7

Mine üles

Lugege faili sisu massiivi

Selle näite skripti testimiseks looge järgmise sisuga tekstifail nimega 'fruits.txt'.

puuviljad.txt

Mango

Jackfruit

Ananass

Oranž

Banaan

Järgmises skriptis salvestatakse faili sisu massiivi nimega “$data”. Siin salvestatakse faili iga rida massiivi iga elemendina. Järgmisena prinditakse massiivi väärtused.

#!/bin/bash

#Lugege kasutajalt failinimi

lugeda -lk 'Sisesta failinimi:' faili nimi

kui [ -f $ failinimi ]

siis

#Lugege faili sisu massiivi'

andmeid = ( ` kass ' $ failinimi ' ` )

kaja 'Faili sisu on toodud allpool:'

#Lugege faili rida rea ​​haaval

jaoks rida sisse ' ${data[@]} '

teha

kaja $rida

tehtud

olla

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Käsu 'cat' kuvatav väljund ja skripti väljund on sarnased, kuna samale failile pääseb juurde käsk 'cat' ja skript:

  lk 8

Mine üles

Kombineerige massiivi väärtused

Mitme massiivi väärtuste kombineerimisel luuakse uus massiiv. Järgmises skriptis on määratletud kaks stringide arvulist massiivi. Seejärel luuakse nende massiivide väärtuste kombineerimisel uus massiiv.

#!/bin/bash

#Deklareerige esimene massiiv

kuulutama -a nimeloend1 = ( 'Michael' 'David' 'Aleksander' 'Thomas' )

kaja 'Esimesed massiivi väärtused on:'

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

kaja

#Deklareerige teine ​​massiiv

kuulutama -a nimeloend2 = ( 'Robert' 'Richard' )

kaja 'Teised massiivi väärtused on:'

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

kaja

#Loo uus massiiv, ühendades kaks massiivi

kombineeritud_massiiv = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

kaja 'Kombineeritud massiivi väärtused on:'

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

kaja

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Siin trükitakse väljundisse kolme massiivi väärtused. Kolmas massiiv sisaldab kõiki esimese ja teise massiivi väärtusi:

  lk 9

Mine üles

Muutke massiivi väärtusi

Ühe või mitme massiivi väärtuse värskendamise meetod indeksi mainimise kaudu on näidatud järgmises skriptis:

#!/bin/bash

#Deklareerige esimene massiiv

kuulutama -a nimekiri = ( 'Michael' 'David' 'Aleksander' 'Thomas' )

kaja 'Massiivi väärtused:'

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

kaja

#Uuendage massiivi 2. väärtust

nimekiri [ 1 ] = 'Robert'

kaja 'Massiivi väärtused pärast värskendamist:'

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

kaja

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Põhimassiivi ja värskendatud massiivi väärtused trükitakse väljundisse:

  p10

Eemaldage massiivi väärtused

'Unset' käsku kasutatakse konkreetse elemendi või kõigi massiivi elementide eemaldamiseks. Järgmises skriptis eemaldatakse massiivi teine ​​element.

#!/bin/bash

#Deklareerige numbriline massiiv

kuulutama -a raamatuid = ( 'Shelli skriptimise õpetused' 'Bish Bash Bosh!' 'Õppige Bashi kiiresti' )

#Prindi massiivi väärtused enne eemaldamist

kaja 'Massiivi väärtused:'

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

kaja

#Eemaldage 2. element

määramata raamatuid [ 1 ]

#Prindi massiivi väärtused pärast eemaldamist

kaja 'Massiivi väärtused pärast 2. väärtuse eemaldamist:'

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

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Põhimassiivi väärtused ja massiivi väärtused pärast ühe väärtuse eemaldamist trükitakse väljundisse:

  p11

Mine üles

Otsige ja asendage massiivi väärtused

Järgmises skriptis asendatakse massiivi konkreetne väärtus teise väärtusega, kui mustris määratletud otsinguväärtus on sobitatud massiivi '$names' mis tahes väärtusega.

#!/bin/bash

#Deklareerige esimene massiiv

kuulutama -a nimed = ( 'Michael' 'David' 'Aleksander' 'Thomas' )

#Prindi algsed massiivi väärtused

kaja 'Algsed massiivi väärtused:'

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

#Loo string pärast massiivi väärtuste asendamist

uuendatud_massiiv = ${names[@]/Alexander/Richard}

#Prindi massiivi väärtused pärast asendamist

kaja 'Massiivi väärtused pärast asendamist:'

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

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Põhimassiivi väärtused ja massiivi väärtused pärast väärtuse asendamist trükitakse väljundisse:

  p12

Mine üles

Kasutage funktsiooni argumendina massiivi

Järgmises skriptis edastatakse funktsiooni argumendina massiivi muutuja ja selle massiivi väärtused trükitakse hiljem.

#!/bin/bash

#Deklareerige arvude massiiv

kuulutama -a numbrid = ( 10 6 Neli, viis 13 8 )

#Defineerige funktsioon, mis võtab argumendi väärtuse

func ( )

{

#Lugege esimest argumenti

numbrid = 1 dollar

#Prindi massiivi väärtused

kaja 'Massiivi väärtused:'

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

}

#Kutsuge funktsioon välja massiivi argumendina

func ' ${numbers[@]} '

Väljund :

Pärast skripti käivitamist kuvatakse järgmine väljund:

  p13

Mine üles

Funktsioonist massiivi tagastamine

Järgmises skriptis kutsutakse funktsiooni välja nelja numbrilise argumendiga. Argumendi väärtustega luuakse massiiv ja see massiiv tagastatakse funktsioonilt helistajale.

#!/bin/bash

#Defineerige funktsioon, mis loeb nelja argumendi väärtust

func ( )

{

#Lugege argumendi väärtusi

numbrid = ( 1 dollar 2 dollarit 3 dollarit 4 dollarit )

#Tagasta massiiv

kaja ' ${numbers[@]} '

}

#Kutsuge funktsiooni kolme argumendiga

return_val =$ ( func 78 Neli, viis 90 23 )

#Salvestage tagastatav väärtus massiivi

lugeda -a ühel <<< $tagasi_valik

#Prindige tagastatud massiivi väärtused

kaja 'Massiivi väärtused on:'

jaoks sisse sisse ' ${num[@]} '

teha

kaja ' $in '

tehtud

Väljund :

Pärast skripti käivitamist kuvatakse järgmine väljund:

Mine üles

Tehke massiiv tühjaks

Järgmine skript näitab massiivi tühjaks muutmise meetodit käsuga 'unset'. Massiivi väärtuste koguarv trükitakse enne ja pärast massiivi tühjaks tegemist.

#!/bin/bash

#Deklareerige arvude massiiv

kuulutama -a numbrid = ( 10 6 Neli, viis 13 80 )

kaja 'Massiivi väärtuste arvud: ${#numbers[@]} '

#Tee massiiv tühjaks

määramata numbrid

kaja 'Massiivi väärtuste arv pärast massiivi tühjaks tegemist: ${#numbers[@]} '

Väljund :

Pärast skripti täitmist ilmub järgmine väljund. Massiivi elementide arv sai pärast massiivi tühjaks tegemist 0:

  lk 15

Mine üles

Järeldus

Selles õpetuses kuvatakse 15 lihtsa näite abil Bashi skripti massiivimuutujate deklareerimise, juurdepääsu, muutmise ja eemaldamise erinevaid meetodeid. Loodame, et see õpetus aitab Bashi kasutajatel Bashi massiivi kasutusalasid üksikasjalikult tundma õppida.