Ухватите се у коштац са Басх низовима – како их декларисати, манипулисати њима и избрисати их.

Низови су складишта података која се користе за чување вредности које имају неку везу једна са другом. За разлику од већине програмских језика, Басх низови могу да чувају вредности различитих типова података у истом низу.

Басх има две врсте низова: индексиране низове и асоцијативне низове. За индексиране низове, индекси почињу од 0 до (н-1), као што је уобичајено у већини језика. Међутим, низови у Басху су ретки. То значи да можете да доделите (н-1)-ти елемент низа, а да нисте доделили (н-2)-ти елемент.

У овом водичу ћете научити како да радите са низовима у Басху. Хајде да почнемо.

Дефинисање низова

Постоје три начина на која можете дефинисати низове у Басху. Слично Басх променљивим, низови морају бити иницијализовани при креирању. Једини изузетак од овога је ако користите прогласити кључна реч. Такође морате да будете сигурни да није остављен простор са обе стране оператора додељивања док иницијализујете низ.

instagram viewer

Први метод је сложено додељивање вредности имену низа. Постоје два начина да то урадите:

arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

У првом сложеном додељивању, вредности у округлим заградама се додељују узастопно из индекса [0] до [3].

Међутим, у другом, вредности се додељују индексу у било ком редоследу који је програмер навео.

Повезан: Шта су варијабле окружења у Линуку? Све што треба да знате

Ако сте пажљиво приметили арр2, приметићете тај индекс [2] био изостављен. Низ ће и даље бити креиран без икаквих грешака. Овај задатак је заправо демонстрација оскудног складиштења у Басх низовима као што смо раније дотакли.

Имајте на уму да нема зареза који раздвајају вредности низа. Вредности су једноставно одвојене размацима.

Други метод индиректно декларише низ. Можете само да почнете да додељујете вредности нултим елементима низа:

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

Трећи начин је експлицитно декларисање низа са кључном речи прогласити:

declare -a arrayName

Операције на низовима

Да бисте приступили елементима низа, користите ову синтаксу: ${низ[индекс]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Ако уместо тога треба да одштампате цео низ, користите @ симбол као

индекс оф ${низ[индекс]}:

echo${fruits[@]}

Да бисте сазнали број елемената у низу, користите # симбол као што је приказано испод:

echo ${#fruits[1]}

Можда ћете такође морати да измените елементе низа—погледајте пример у наставку како то учинити. Слично је како додајете нови елемент. Једина разлика је у томе што вредност замењујете индексом који већ има вредност.

fruits[1]=pears

Асоцијативни низови

Низ који има произвољне вредности као своје кључеве назива се асоцијативни низ. Ови низови се користе за чување повезаних парова кључ/вредност.

Повезан: Како претворити Басх скрипте у апликације на које се може кликнути користећи АпплеСцрипт

Да бисте дефинисали асоцијативни низ, потребно је да то урадите експлицитно користећи кључну реч прогласити.

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

Можете да приступите елементу члана на исти начин као и индексираним низовима:

echo${animal[lion]}

Ако желите да одштампате све вредности, можете користити @ симбол као што је приказано испод:

echo${animal[@]}

Ако желите да одштампате све кључеве низа, можете користити @ и ! симболи као што је приказано у наставку:

echo${!animal[@]}

Да бисте пронашли број елемената које асоцијативни низ има, користите исту синтаксу коју бисте користили са индексираним низовима (демонстрирано у последњем одељку).

Ако желите да избришете ставку низа или цео низ, користите синтаксу испод:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

Коришћење команде принтф

Можда сте приметили да цео овај чланак користи одјек команда за излаз података у љуску. Тхе одјек команда ради за овај водич, али има мало функција и флексибилности када је у питању форматирање стрингова.

Међутим принтф команда нуди конкретније опције форматирања које Басх скриптовање чине лаким. Леарнинг тхе принтф функција ће сигурно побољшати ваше искуство форматирања стрингова и ефикасност у Басху.