Bash scenarijus – masyvas

Bash scenarijus – masyvas

Masyvai yra svarbios sąvokos programuojant ar scenarijuose. Masyvai leidžia saugoti ir gauti elementus sąrašo formoje, kuri gali būti naudojama tam tikroms užduotims atlikti. Bash sistemoje taip pat turime masyvus, kurie padeda mums komandinėje eilutėje kurti scenarijus, skirtus duomenų saugojimui sąrašo formatu. Šiame straipsnyje mes suprasime bash scenarijų masyvų pagrindus.

Masyvų kūrimas

Norėdami sukurti pagrindinį masyvą bash scenarijuje, galime naudoti deklaravimą -a komandą, po kurios nurodomas masyvo kintamojo, kurį norite pateikti, pavadinimas.

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

ARBA

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

Elementų reikšmė gali būti bet koks sveikasis skaičius, eilutės arba bet kokia kita duomenų forma, kaip pageidaujama. Matome, kad masyvas deklaruojamas bash scenarijuje dviem būdais, pirmasis atrodo patogesnis ir ne toks sudėtingas deklaruoti. Jei norime deklaruoti masyvą vienu ypu, pirmasis yra optimalus pasirinkimas, tačiau jei elementus reikia pridėti bitais ir gabalais, pastarasis yra geras pasirinkimas.

Masyvų spausdinimas

Deklaravus masyvą, jei norime rodyti visus masyvo elementus, galime naudoti simbolį @.

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

echo '${array_name[@]}' 

Mes naudojame [@] kaip masyvo rodyklę, kad būtų rodomi visi elementai. Visi elementai spausdinami tarpais atskirti, kabutės aplink kintamąjį išplečiamos ir spausdinami visi masyvo elementai.

Kartojimas per masyvą

Norėdami kartoti masyvo vieną elementą vienu metu, galime naudoti kilpas ir atlikti bet kokias operacijas jame.

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

Kaip matome, mes panaudojome for kilpą, norėdami po vieną spausdinti elementą iš masyvo. Ankstesnėje dalyje naudojome triuką, kaip gauti visus masyvo elementus ir kartoti jį po vieną „for“ cikle. ${array_name[@]} išsiplečia į visus masyvo elementus, o ciklas for kartoja juos po vieną su iteratoriumi pavyzdyje tai yra kintamasis i , For ciklo korpuse spausdiname kintamasis/iteratorius i ir taip kartoti per masyvą.

Gaukite elementų skaičių masyve

Norėdami gauti masyvo elementų skaičių, galime naudoti # operatorių prieš masyvo pavadinimą s langelyje ${array_name[@]}.

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

Taigi mes grąžiname masyvo dydį naudodami komandą ${#sport[@]}, # naudojamas norint gauti šalia esančio kintamojo dydį, naudojant dvigubas kabutes įvertinama komandos reikšmė ir gauname norimą elementų skaičių masyve.

Elemento įterpimas į masyvą

Norėdami įterpti elementą yra gana paprasta, turime nustatyti atitinkamą elemento indeksą, po kurio nurodoma elemento, kurį norėjote pateikti, vertė.

#!/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[@]}' 

Į masyvą įtraukėme 5-ąjį elementą (4-ąjį indeksą), taip pat pakeitėme / redagavome 3-ąjį masyvo elementą (2-ąjį indeksą). The masyvo pavadinimas[index]=reikšmė yra visos gudrybės pridėti, modifikuoti ar inicijuoti masyvo elementus.

Taip pat galime įtraukti elementus į masyvą naudodami += operatorių.

#!/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[@]}' 

Kaip matyti pavyzdyje, į masyvą galime įtraukti kelis elementus su minimaliu kodu. Mes naudojame masyvo_pavadinimas+=(elementai), norėdami pridėti elementus prie masyvo.

Elemento ištrynimas iš masyvo

Norėdami ištrinti elementą iš masyvo, galime naudoti komandą unset. Komanda paima kintamojo pavadinimą mūsų atveju masyvo pavadinimą ir to elemento indeksą. Indeksas taip pat gali būti santykinis, t. y. -1, nurodantis paskutinį elementą, o nuo -2 iki antrojo paskutinio ir pan.

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

Kaip matome, nenustatytas masyvovardas[indeksas] iš masyvo ištrins indekso elementą. Be to, masyvo dydis sumažintas iki 3 nuo 4, o tai rodo, kad elementas visiškai pašalintas, o ne tik pakeistas tarpais.

Naudojant santykinius indeksus

Jei naudojame indeksus, pvz., -1, -2 ir tt, elementai nurodomi nuo paskutinio elemento, todėl galime juos ištrinti arba modifikuoti santykine tvarka iš galo.

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

Kaip matome, indeksas 1 taip pat nurodomas kaip -3 iš galo, todėl tampa palyginti lengviau nurodyti tam tikrus didelio masyvo elementus.

Sujunkite masyvą

Mes galime sujungti (išimti gėrimą) masyvą, kad priskirtume arba atsispausdintume jį kitam kintamajam / masyvei.

#!/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[@]}' 

Iš sporto masyvo išėmėme dalį, t. y. elementą tarp indeksų 1 ir 3 imtinai, ir priskyrėme jį arr kintamajam, kuris taip pat yra masyvas. @ operatorius gauna visus elementus iš masyvo ir tada galime sujungti masyvą tarp indeksų 1 ir 3, kad elementai būtų 1, 2 ir 3 (kriketas, ledo ritulys ir beisbolas) iš sporto masyvo.

Apibrėžkite statinį masyvą ir atspausdinkite masyvo 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[*]$ 

Statinio masyvo elementus galime spausdinti dviem būdais

Programos vykdymas

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

Komandinės eilutės argumentų perdavimas scenarijaus faile

#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]} 

Aukščiau pateiktas scenarijus gali būti vykdomas kaip

# Čia Java, Python ir Ruby yra komandinės eilutės argumentai

sh arrayCheck.sh Java Python Ruby 

Scenarijaus vykdymo žingsniai:

programingArray=(Java Python Ruby)

#Java bus 0 indekse, jo dydį galima apskaičiuoti taip

${#programmingArray[0]}

Panašiai Python bus 1-ame indekse, jo dydį galima apskaičiuoti taip

${#programmingArray[1]}

Išvestis:

Masyvo reikšmių kartojimas naudojant for ciklus

$@ pateiks visas reikšmes, kurios buvo perduotos per komandinės eilutės argumentus, ir bus saugomos masyve.

Jis gali būti kartojamas naudojant for kilpą

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

Išvestis:

Greitai pažvelkime į tai, ką reiškia kiekvienas simbolis

Sintaksė

Išvestis
arr=()

arr[0]=3 Perrašyti 1 elementą

arr+=(4) Pridėti reikšmę (-es)

str=$(ls) Išsaugokite ls išvestį kaip eilutę

arr=( $(ls) ) Išsaugokite ls išvestį kaip failų masyvą

${arr[@]:s:n} Gauti n elementų, pradedant nuo indekso

#Galime pateikti vertybių rinkinį

kaip šitas

arr = (vienas du trys)

Norėdami inicijuoti masyvą
${arr[0]} Norėdami gauti pirmąjį elementą. Indeksas visada prasideda nuo 0
${arr[@]} Norėdami gauti visus elementus ir tada galime kartoti ciklu
${!arr[@]} Norėdami gauti vien masyvo indeksus
${#arr[@]} Norėdami apskaičiuoti masyvo dydį
arr[2]=3 Norėdami perrašyti 3 elementą, turime jį naudoti tokiu būdu. Kadangi indeksas prasideda nuo 0, arr[2] yra teisingas.
arr+=(40) Norėdami pridėti reikšmę (-es), galime naudoti +, tada priskirti su =, todėl naudojamas +=.
str=$(ls) Norėdami išsaugoti ls komandos išvestį kaip eilutę (šiam išėjimui parodytas 4 pavyzdys)
arr=( $(ls) ) Norėdami išsaugoti ls išvestį kaip failų masyvą (šios išvesties 5 pavyzdys parodytas)
${arr[@]:s:n} Norėdami gauti n elementų, prasidedančių indeksu s