logo

Bash skriptēšana — masīvs

Masīvi ir svarīgi jēdzieni programmēšanā vai skriptēšanā. Masīvi ļauj mums saglabāt un izgūt elementus saraksta formā, ko var izmantot noteiktiem uzdevumiem. Programmā bash mums ir arī masīvi, kas palīdz komandrindā izveidot skriptus datu glabāšanai saraksta formātā. Šajā rakstā mēs sapratīsim bash skriptu masīvu pamatus.

Masīvu izveide

Lai izveidotu pamata masīvu bash skriptā, mēs varam izmantot deklarāciju -a komandu, kam seko tā masīva mainīgā nosaukums, kuru vēlaties dot.



#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball )>

VAI

#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball>

Elementu vērtība var būt jebkurš vesels skaitlis vai virknes, vai jebkura cita veida dati pēc vēlēšanās. Mēs redzam, ka masīvs tiek deklarēts bash skriptā divos veidos, pirmais šķiet ērtāks un mazāk drudžains deklarēšana. Ja mēs vēlamies deklarēt masīvu vienā piegājienā, pirmā ir optimālā izvēle, bet, ja elementi ir jāpievieno bitos un gabalos, otrā ir laba izvēle.

Masīvu drukāšana

Pēc masīva deklarēšanas, ja vēlamies parādīt visus masīva elementus, varam izmantot simbolu @.



#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}'>

echo '${array_name[@]}'>

Mēs izmantojam [@] kā masīva indeksu, lai parādītu visus elementus. Visi elementi tiek drukāti ar atstarpi, pēdiņas ap mainīgo tiek izvērstas un izdrukā visus masīva elementus.

Atkārtošana masīvā

Lai atkārtotu masīvu pa vienam elementam, mēs varam izmantot cilpas un veikt jebkuras darbības tā pamattekstā.



#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i 
' done>

Kā redzam, mēs esam izmantojuši for cilpu, lai drukātu elementu no masīva pa vienam. Iepriekšējā sadaļā mēs izmantojām triku, kā iegūt visus masīva elementus un pa vienam to atkārtot for a cilpā. ${array_name[@]} izvēršas visos masīva elementos, un for cilpa atkārtojas pār tiem pa vienam ar iteratoru piemērā, tas ir mainīgais i , for cilpas pamattekstā mēs izdrukājam mainīgais/iterators i un tādējādi atkārtojiet masīvu.

Iegūstiet elementu skaitu masīvā

Lai iegūtu masīva elementu skaitu, mēs varam izmantot operatoru # pirms masīva nosaukuma s sadaļā ${array_name[@]}.

 #!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}'>

Tādējādi mēs atgriežam masīva lielumu, izmantojot komandu ${#sport[@]}, # tiek izmantots, lai iegūtu blakus esošā mainīgā lielumu, izmantojot pēdiņas, tiek novērtēta komandas vērtība un mēs iegūstam vajadzīgo elementu skaitu masīvā.

Elementa ievietošana masīvā

Elementa ievietošana ir diezgan vienkārša, mums ir jāiestata atbilstošais elementa indekss, kam seko tā elementa vērtība, kuru vēlaties norādīt.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport[4]='dodgeball' sport[2]='golf' echo '${sport[@]}'>

Mēs esam pievienojuši masīvam 5. elementu (4. indekss), kā arī modificējuši/rediģējuši masīva 3. elementu (2. indekss). The masīva nosaukums[indekss]=vērtība ir visi triki, lai pievienotu, modificētu vai inicializētu masīva elementus.

Mēs varam arī pievienot elementus masīvam, izmantojot operatoru +=.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport+=('golf' 'baseball') echo '${sport[@]}' echo 'Size : ${#sport[@]}'>

Kā redzams piemērā, mēs varam pievienot vairākus elementus masīvam ar minimālu kodu. Mēs izmantojam masīva_nosaukums+=(elementi), lai masīvam pievienotu elementus.

Elementa dzēšana no masīva

Lai izdzēstu elementu no masīva, mēs varam izmantot komandu unset. Komanda uzņem mainīgā nosaukumu mūsu gadījumā masīva nosaukumu un šī elementa indeksu. Indekss var būt arī relatīvs, t.i., -1, kas norāda pēdējo elementu, un -2 līdz otrajam pēdējam un tā tālāk.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}'>

Kā redzam, unset masīva_nosaukums[indekss] izdzēsīs no masīva indeksā esošo elementu. Arī masīva lielums ir samazināts līdz 3 no 4, kas norāda, ka elements ir pilnībā noņemts, nevis tikai aizstāts ar atstarpi.

Izmantojot relatīvos indeksus

Ja mēs izmantojam indeksus, piemēram, -1, -2 un tā tālāk, elementi tiek atsaukti no pēdējā elementa, un tāpēc mēs varam tos dzēst vai modificēt ar relatīvu secību arī no aizmugures.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}'>

Kā mēs redzam, indekss 1 tiek apzīmēts arī kā -3 no aizmugures, un tādējādi kļūst salīdzinoši vieglāk atsaukties uz dažiem elementiem lielā masīvā.

Savienojiet masīvu

Mēs varam savienot (izņemt dziru) masīvu, lai piešķirtu vai izdrukātu to citam mainīgajam/masīvam.

#!/bin/usr/env bash declare -a sport sport+=('football' 'cricket' 'hockey' 'basketball') sport+=('golf' 'baseball') echo 'sport = ${sport[@]}' arr='${sport[@]:1:3}' echo 'arr = ${arr[@]}'>

Mēs esam izņēmuši daļu no sporta masīva, t.i., elementu starp indeksu 1 un 3 ieskaitot, un piešķīruši to mainīgajam arr, kas arī ir masīvs. Operators @ iegūst visus elementus no masīva, un tad mēs varam savienot masīvu starp indeksiem 1 un 3, lai mums būtu elementi 1, 2 un 3 (krikets, hokejs un beisbols) no sporta masīva.

Definējiet statisku masīvu un izdrukājiet masīva elementus

#To declare static Array programmingArray=(Java Python Ruby Perl) #In below 2 ways we can print the elements of the static array echo 'Way 1 of printing static values by using [@]:0 - ' ${programmingarray[@]$ echo 'Way 2 of printing static values by using [*]:0 - ' ${programmingarray[*]$>

Statiskā masīva elementus varam izdrukāt divos veidos

Programmas izpilde

sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here>

Komandrindas argumentu nodošana skripta failā

#All the array elements are stored in an array called programmingArray programmingArray=('$@') #Index values start from 0 #If we do not specify the index, it will take up the size of first index value echo 'Size of programmingArray at 0th location..:' $(#programmingArray[0]} echo 'Size of programmingArray at 1st location..:' $(#programmingArray[1]}>

Iepriekš minēto skriptu var izpildīt kā

# Šeit Java, Python un Ruby ir komandrindas argumenti

gadu ceturkšņos
sh arrayCheck.sh Java Python Ruby>

Skripta izpildes soļi:

programmingArray=(Java Python Ruby)

#Java būs 0. indeksā, tā lielumu var aprēķināt tālāk norādītajā veidā

${#programmingArray[0]}

Tāpat Python būs 1. indeksā, tā lielumu var aprēķināt šādi

${#programmingArray[1]}

Izvade:

Masīva vērtību atkārtošana, izmantojot cilpu

$@ sniegs visas vērtības, kas tika nodotas, izmantojot komandrindas argumentus, un tās tiek saglabātas masīvā.

To var atkārtot, izmantojot for cilpu

declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done>

Izvade:

Ļaujiet mums ātri apskatīt to, ko attēlo katrs simbols

Sintakse

Izvade
arr=()

arr[0]=3 Pārrakstīt 1. elementu

arr+=(4) Pievienot vērtību(-as)

str=$(ls) Saglabājiet ls izvadi kā virkni

arr=( $(ls) ) Saglabājiet ls izvadi kā failu masīvu

${arr[@]:s:n} Izgūt n elementus, sākot ar indeksu

#Mēs varam nodrošināt vērtību kopumu

kā šis

arr = (viens divi trīs)

Lai inicializētu masīvu
${arr[0]} Lai izgūtu pirmo elementu. Indekss vienmēr sākas ar 0
${arr[@]} Lai izgūtu visus elementus, un pēc tam mēs varam atkārtot cilpu
${!arr[@]} Lai izgūtu tikai masīva indeksus
${#arr[@]} Lai aprēķinātu masīva lielumu
arr[2]=3 Lai pārrakstītu trešo elementu, tas ir jāizmanto šādā veidā. Tā kā indekss sākas ar 0, arr[2] ir pareizs.
arr+=(40) Lai pievienotu vērtību(-as), mēs varam izmantot + un pēc tam piešķirt ar = un tādējādi tiek izmantots +=.
str=$(ls) Lai saglabātu ls komandas izvadi kā virkni (šai izvadei ir parādīts 4. piemērs)
arr=( $(ls) ) Lai saglabātu ls izvadi kā failu masīvu (šai izvadei ir parādīts 5. piemērs)
${arr[@]:s:n} Lai izgūtu n elementus, sākot ar indeksu s