Paano Manipulate at Kontrolin ang Data gamit ang Bash Array

Paano Manipulate At Kontrolin Ang Data Gamit Ang Bash Array



Ang array variable ay ginagamit sa anumang programming language para mag-imbak ng maraming value gamit ang isang index. Ang array index ay maaaring isang numero o string. Ang array na naglalaman ng numeric index ay tinatawag na 'numeric array' at ang array na naglalaman ng string value bilang index ay tinatawag na 'associative array'. Parehong numeric at associative arrays ay maaaring gawin sa Bash. Ang mga paraan ng pagmamanipula at pagkontrol sa data ng Bash array ay ipinapakita nang detalyado gamit ang 15 halimbawa sa tutorial na ito.

Listahan ng Nilalaman:

  1. Tukuyin ang isang Array sa pamamagitan ng Index
  2. Tukuyin ang isang Array na may Maramihang Halaga
  3. Tukuyin ang isang Associative Array
  4. Bilangin ang Array Values
  5. Basahin ang Array Values ​​ayon sa Loop
  6. Basahin ang Mga Partikular na Halaga ng Array
  7. Ipasok ang Array Values
  8. Magbasa ng Nilalaman ng File sa Array
  9. Pagsamahin ang Array Values
  10. Baguhin ang Array Values
  11. Alisin ang Array Values
  12. Hanapin at Palitan ang Array Values
  13. Gumamit ng Array bilang isang Function Argument
  14. Ibalik ang Array mula sa Function
  15. Gawing Walang laman ang Array

Tukuyin ang isang Array sa pamamagitan ng Index

Ang paraan ng pagdedeklara ng array sa pamamagitan ng pagbanggit ng sequential o nonsequential numeric index ay ipinapakita sa sumusunod na script. Ang ganitong uri ng array ay tinatawag na numeric array. Dito, ang array na '$books' ay nilikha sa pamamagitan ng pagtukoy sa tatlong sequential index at ang '$products' array ay nilikha sa pamamagitan ng pagtukoy ng apat na hindi sequential index. Ang lahat ng mga halaga ng parehong mga array ay naka-print gamit ang 'printf' function.







#!/bin/bash

#Define array index sa sequential order

mga libro [ 0 ] = 'Pag-aaral ng bash Shell'

mga libro [ 1 ] = 'Cybersecurity Ops na may bash'

mga libro [ 2 ] = 'Bash Command Line Pro Tips'

echo 'Lahat ng value ng unang array:'

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

#Define array index sa hindi sunud-sunod na pagkakasunud-sunod

mga produkto [ 10 ] = 'Pulat'

mga produkto [ 5 ] = 'Lapis'

mga produkto [ 9 ] = 'Rular'

mga produkto [ 4 ] = 'A4 Size na Papel'

echo

echo 'Lahat ng value ng pangalawang array:'

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

Output :



Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang mga halaga ng parehong array ay naka-print sa output. Ang pagkakasunud-sunod ng index ay pinananatili sa oras ng pag-print para sa hanay ng mga hindi sunud-sunod na index:



  p1





Pumunta sa tuktok

Tukuyin ang isang Array na may Maramihang Halaga

Ang isang numeric array na may maraming mga halaga ay maaaring ideklara gamit ang 'declare' command na may -a na opsyon o nang hindi gumagamit ng 'declare' command. Sa sumusunod na script, ang unang array ay idineklara gamit ang 'declare' command at ang pangalawang array ay nilikha nang hindi gumagamit ng 'declare' command.



#!/bin/bash

#Declare a numeric array with the 'declare' keyword

magpahayag -a mga pangalan = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' )

#I-print ang mga halaga ng array

echo 'Lahat ng value ng unang array:'

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

#Declare a numeric array without 'declare' keyword

mga libro = ( 'Mga Tutorial sa Shell Scripting' 'Bish Bash Bosh!' 'Alamin ang Bash Mabilis' )

#Magdagdag ng bagong linya

echo

#I-print ang mga halaga ng array

echo 'Lahat ng value ng pangalawang array:'

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

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang mga halaga ng parehong mga array ay naka-print dito:

  p2

Pumunta sa tuktok

Tukuyin ang isang Associative Array

Ang array na naglalaman ng string value bilang index ay tinatawag na associative array. Ang -A na opsyon ay ginagamit sa 'declare' command sa Bash upang lumikha ng isang associative Bash array. Sa sumusunod na script, ang unang associative array ay idineklara sa pamamagitan ng pagbanggit sa mga index nang hiwalay at ang pangalawang array ay idineklara sa pamamagitan ng pagbanggit sa lahat ng key-value pairs sa oras ng array declaration.

#!/bin/bash

#Declare an associative array variable na walang value

magpahayag -A empleado

#Magtalaga ng halaga nang hiwalay sa pamamagitan ng pagtukoy sa index

empleado [ 'id' ] = '78564'

empleado [ 'pangalan' ] = 'Actors Available'

empleado [ 'post' ] = 'CEO'

empleado [ 'suweldo' ] = 300000

#Mag-print ng dalawang value ng array

echo 'ID ng empleyado: ${employee[id]} '

echo 'Pangalan ng Empleyado: ${employee[name]} '

#Declare isang associative array na may mga value

magpahayag -A kurso = ( [ code ] = 'CSE-206' [ pangalan ] = 'Object Oriented Programming' [ oras_kredito ] = 2.0 )

#Magdagdag ng bagong linya

echo

#Mag-print ng dalawang array value ng pangalawang array

echo 'Pangalan ng Kurso: ${course[name]} '

echo 'Oras ng Credit: ${course[credit_hour]} '

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang mga partikular na value ng associative array ay naka-print dito sa pamamagitan ng pagbanggit sa key o index value:

  p3

Pumunta sa tuktok

Bilangin ang Array Values

Ang paraan ng pagbibilang ng kabuuang elemento ng numeric array at ang associative array ay ipinapakita sa sumusunod na script:

#!/bin/bash

#Declare a numeric array

magpahayag -a mga pangalan = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' ) ;

echo 'Ang haba ng numeric array ay ${#pangalan[@]} '

#Declare isang associative array

magpahayag -A kurso = ( [ code ] = 'CSE-206' [ pangalan ] = 'Object Oriented Programming' [ oras_kredito ] = 2.0 )

echo 'Ang haba ng associative array ay ${#course[@]} '

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang haba ng array ng numeric at associative arrays ay naka-print dito:

  p4

Pumunta sa tuktok

Basahin ang Array Values ​​ayon sa Loop

Ang paraan ng pagbabasa ng lahat ng value ng isang numeric array at isang associative array gamit ang 'for' loop ay ipinapakita sa sumusunod na script:

#!/bin/bash

#Declare a numeric array

magpahayag -a mga libro = ( 'Mga Tutorial sa Shell Scripting' 'Bish Bash Bosh!' 'Alamin ang Bash Mabilis' )

#Print ang numeric array values

echo 'Ang mga halaga ng numeric array ay:'

para sa sa sa ' ${mga aklat[@]} '

gawin

echo ' $in '

tapos na

echo

#Declare isang associative array na may mga value

magpahayag -A mga kliyente = (

[ id ] = 'H-5623'

[ pangalan ] = 'Ginoo. Ahnaf'

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

[ telepono ] = '+8801975642312' )

#Print ang associative array values

echo 'Ang mga nauugnay na halaga ng array ay:'

para sa k sa ' ${!kliyente[@]} '

gawin

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

tapos na

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Dito, naka-print sa output ang mga value ng numeric array at ang key-value pairs ng associative array:

  p5

Pumunta sa tuktok

Basahin ang Partikular na Saklaw ng Mga Halaga ng Array

Ang mga halaga ng array ng partikular na hanay ng mga index ay ipinapakita sa sumusunod na script. Sa script, tinukoy ang isang numeric na hanay ng apat na elemento. Dalawang array value mula sa pangalawang index ng array ang ipi-print sa ibang pagkakataon.

#!/bin/bash

#Declare a numeric array

magpahayag -a mga cake = ( 'Chocolate Cake' 'Vanilla Cake' 'Red Velvet Cake' 'strawberry cake' )

#I-print ang partikular na mga halaga ng array

echo 'Ang ika-2 at ika-3 elemento ng mga halaga ng array ay:'

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

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang pangalawa at pangatlong value ng array ay 'Vanilla Cake' at 'Red Velvet Cake' na naka-print sa output:

  p6

Pumunta sa tuktok

Ipasok ang Array Values

Ang paraan ng pagdaragdag ng maramihang mga halaga sa dulo ng array ay ipinapakita sa sumusunod na script. Ang pangunahing array na '$books' ay naglalaman ng tatlong elemento at dalawang elemento ang idinaragdag sa dulo ng '$books' array.

#!/bin/bash

#Declare a numeric array

magpahayag -a mga libro = ( 'Mga Tutorial sa Shell Scripting' 'Bish Bash Bosh!' 'Alamin ang Bash Mabilis' )

#Print ang array values ​​bago ipasok

echo 'Mga halaga ng array:'

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

echo

mga libro = ( ' ${mga aklat[@]} ' 'Linux Command Line at Shell Scripting Bible' 'Advanced Bash Scripting Guide ni Mendel Cooper' )

#I-print ang mga halaga ng array pagkatapos ipasok

echo 'Mga halaga ng array pagkatapos magpasok ng dalawang halaga:'

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

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang mga halaga ng array bago at pagkatapos ng pagpasok ng mga bagong halaga ay naka-print sa output:

  p7

Pumunta sa tuktok

Basahin ang Nilalaman ng File sa Array

Gumawa ng text file na pinangalanang 'fruits.txt' na may sumusunod na nilalaman upang subukan ang script ng halimbawang ito:

prutas.txt

Mango

Langka

Pinya

Kahel

saging

Sa sumusunod na script, ang nilalaman ng isang file ay naka-imbak sa isang array na pinangalanang '$data'. Dito, ang bawat linya ng file ay naka-imbak bilang bawat elemento ng array. Susunod, ang mga halaga ng array ay naka-print.

#!/bin/bash

#Basahin ang filename mula sa user

basahin -p 'Ilagay ang filename:' filename

kung [ -f $filename ]

pagkatapos

#Basahin ang nilalaman ng file sa isang array'

datos = ( ` pusa ' $filename ' ` )

echo 'Ang nilalaman ng file ay ibinigay sa ibaba:'

#Basahin ang file sa bawat linya

para sa linya sa ' ${data[@]} '

gawin

echo $linya

tapos na

maging

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang output na ipinapakita ng command na 'cat' at ang output ng script ay magkatulad dahil ang parehong file ay ina-access ng command na 'cat' at ang script:

  p8

Pumunta sa tuktok

Pagsamahin ang Array Values

Ang isang bagong array ay nilikha sa pamamagitan ng pagsasama-sama ng mga halaga ng maramihang mga array. Sa sumusunod na script, dalawang numeric na array ng mga string ang tinukoy. Pagkatapos, ang isang bagong array ay nilikha sa pamamagitan ng pagsasama-sama ng mga halaga ng mga array na ito.

#!/bin/bash

#Ipahayag ang unang hanay

magpahayag -a Listahan ng pangalan1 = ( 'Michael' 'David' 'Alexander' 'Thomas' )

echo 'Ang mga unang halaga ng array ay:'

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

echo

#Ipahayag ang pangalawang hanay

magpahayag -a Listahan ng pangalan2 = ( 'Robert' 'Richard' )

echo 'Ang pangalawang halaga ng array ay:'

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

echo

#Gumawa ng bagong array sa pamamagitan ng pagsasama ng dalawang array

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

echo 'Ang pinagsamang mga halaga ng array ay:'

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

echo

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Dito, ang mga halaga ng tatlong array ay naka-print sa output. Ang ikatlong array ay naglalaman ng lahat ng mga halaga ng una at ang pangalawang array:

  p9

Pumunta sa tuktok

Baguhin ang Array Values

Ang paraan ng pag-update ng isa o higit pang mga halaga ng array sa pamamagitan ng pagbanggit sa index ay ipinapakita sa sumusunod na script:

#!/bin/bash

#Ipahayag ang unang hanay

magpahayag -a Listahan ng pangalan = ( 'Michael' 'David' 'Alexander' 'Thomas' )

echo 'Mga halaga ng array:'

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

echo

#I-update ang 2nd value ng array

Listahan ng pangalan [ 1 ] = 'Robert'

echo 'Mga halaga ng array pagkatapos ng pag-update:'

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

echo

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang mga halaga ng pangunahing array at ang na-update na mga array ay naka-print sa output:

  p10

Alisin ang Array Values

Ang command na 'unset' ay ginagamit upang alisin ang partikular na elemento o lahat ng elemento ng array. Sa sumusunod na script, ang pangalawang elemento ng array ay tinanggal.

#!/bin/bash

#Declare a numeric array

magpahayag -a mga libro = ( 'Mga Tutorial sa Shell Scripting' 'Bish Bash Bosh!' 'Alamin ang Bash Mabilis' )

#Print ang array values ​​bago alisin

echo 'Mga halaga ng array:'

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

echo

#Alisin ang 2nd element

hindi nakatakda mga libro [ 1 ]

#I-print ang mga halaga ng array pagkatapos alisin

echo 'Mga halaga ng array pagkatapos alisin ang ika-2 halaga:'

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

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang mga halaga ng pangunahing array at ang mga halaga ng array pagkatapos alisin ang isang halaga ay naka-print sa output:

  p11

Pumunta sa tuktok

Hanapin at Palitan ang Array Values

Sa sumusunod na script, ang partikular na halaga ng array ay papalitan ng isa pang value kung ang halaga ng paghahanap na tinukoy sa pattern ay tumugma sa anumang halaga ng array na '$names'.

#!/bin/bash

#Ipahayag ang unang hanay

magpahayag -a mga pangalan = ( 'Michael' 'David' 'Alexander' 'Thomas' )

#I-print ang orihinal na mga halaga ng array

echo 'Mga orihinal na halaga ng array:'

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

#Bumuo ng string pagkatapos palitan ang mga halaga ng array

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

#I-print ang mga halaga ng array pagkatapos palitan

echo 'Mga halaga ng array pagkatapos palitan:'

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

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang mga halaga ng pangunahing array at ang mga halaga ng array pagkatapos palitan ang isang halaga ay naka-print sa output:

  p12

Pumunta sa tuktok

Gumamit ng Array bilang isang Function Argument

Sa sumusunod na script, isang array variable ang ipinapasa bilang function argument at ang mga value ng array na iyon ay ipi-print sa ibang pagkakataon.

#!/bin/bash

#Ipahayag ang isang hanay ng mga numero

magpahayag -a numero = ( 10 6 Apat. Lima 13 8 )

#Tukuyin ang isang function na kukuha ng isang halaga ng argumento

func ( )

{

#Basahin ang unang argumento

numero = $1

#I-print ang mga halaga ng array

echo 'Mga halaga ng array:'

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

}

#Tawagan ang function na may array bilang isang argumento

func ' ${numbers[@]} '

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script:

  p13

Pumunta sa tuktok

Magbalik ng Array mula sa Function

Sa sumusunod na script, ang function ay tinatawag na may apat na numeric na argumento. Ang isang array ay nilikha gamit ang mga halaga ng argumento at ang array na iyon ay ibinalik mula sa function patungo sa tumatawag.

#!/bin/bash

#Tukuyin ang isang function na nagbabasa ng apat na halaga ng argumento

func ( )

{

#Basahin ang mga halaga ng argumento

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

#Ibalik ang array

echo ' ${numbers[@]} '

}

#Tawagan ang function na may tatlong argumento

return_val =$ ( func 78 Apat. Lima 90 23 )

#I-store ang return value sa isang array

basahin -a sa isa <<<< $return_val

#Print ang mga halaga ng ibinalik na array

echo 'Ang mga halaga ng array ay:'

para sa sa sa ' ${num[@]} '

gawin

echo ' $in '

tapos na

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script:

Pumunta sa tuktok

Gawing Walang laman ang Array

Ipinapakita ng sumusunod na script ang paraan ng paggawa ng array na walang laman gamit ang command na 'unset'. Ang kabuuang bilang ng mga halaga ng array ay naka-print bago at pagkatapos gawing walang laman ang array.

#!/bin/bash

#Ipahayag ang isang hanay ng mga numero

magpahayag -a numero = ( 10 6 Apat. Lima 13 80 )

echo 'Mga bilang ng mga halaga ng array: ${#numbers[@]} '

#Gawing walang laman ang array

hindi nakatakda numero

echo 'Bilang ng mga halaga ng array pagkatapos gawing walang laman ang array: ${#numbers[@]} '

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang bilang ng mga elemento ng array ay naging 0 pagkatapos gawing walang laman ang array:

  p15

Pumunta sa tuktok

Konklusyon

Ang iba't ibang paraan ng pagdedeklara, pag-access, pagbabago, at pag-alis ng mga variable ng array sa Bash script ay ipinapakita sa tutorial na ito gamit ang 15 simpleng halimbawa. Umaasa kami na ang tutorial na ito ay makakatulong sa mga gumagamit ng Bash na malaman ang mga gamit ng Bash array nang detalyado.