Запознайте се с Bash масивите – как да ги декларирате, манипулирате и изтривате.

Масивите са хранилища на данни, използвани за съхраняване на стойности, които имат някаква връзка една с друга. За разлика от повечето езици за програмиране, Bash масивите могат да съхраняват стойности от различни типове данни в един и същ масив.

Bash има два типа масиви: индексирани масиви и асоциативни масиви. За индексираните масиви индексите започват от 0 до (n-1), както е обичайно в повечето езици. Масивите в Bash обаче са редки. Това означава, че можете да присвоите (n-1)-ия елемент от масива, без да сте присвоили (n-2)-ия елемент.

В този урок ще научите как да работите с масиви в Bash. Да започваме.

Дефиниране на масиви

Има три начина, по които можете да дефинирате масиви в Bash. Подобно на Bash променливите, масивите трябва да бъдат инициализирани при създаване. Единственото изключение от това е, ако използвате декларирам ключова дума. Също така трябва да сте сигурни, че не е останало място от двете страни на оператора за присвояване, докато инициализирате масива.

instagram viewer

Първият метод е съставно присвояване на стойности на името на масива. Има два начина да направите това:

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

При първото съставно присвояване стойностите в кръглите скоби се присвояват последователно от индекса [0] да се [3].

Във втория обаче стойностите се присвояват на индекс в какъвто и ред да е посочил програмистът.

Свързани: Какво представляват променливите на средата в Linux? Всичко, което трябва да знаете

Ако сте обърнали внимание на обр2, ще забележите този индекс [2] беше пропуснат. Масивът пак ще бъде създаден без грешки. Това присвояване всъщност е демонстрация на рядко съхранение в Bash масиви, както споменахме по-рано.

Забележете, че няма запетаи, разделящи стойностите на масива. Стойностите са просто разделени с интервали.

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

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

Асоциативни масиви

Масив, който има произволни стойности като свои ключове, се нарича асоциативен масив. Тези масиви се използват за съхраняване на свързани двойки ключ-стойност.

Свързани: Как да превърнете Bash скриптовете в приложения с възможност за кликване с помощта на AppleScript

За да дефинирате асоциативен масив, трябва да го направите изрично, като използвате ключовата дума декларирам.

# 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

Използване на командата printf

Може би сте забелязали, че цялата тази статия използва ехо команда за извеждане на данни в обвивката. The ехо работи за този урок, но има малко функции и гъвкавост, когато става въпрос за форматиране на низове.

както и да е printf предлага по-специфични опции за форматиране, които правят Bash скриптовете лесни. Изучаване на printf със сигурност ще подобри вашето изживяване при форматиране на низове и ефективност в Bash.