Масиви bash

Відео: BASH tutorials - Arrays

Неможливо уявити собі мову програмування, який не підтримував би масивів. Під масивами зазвичай розуміються впорядковані списки рядків, символів або будь-яких інших об`єктів. Неважливо як вони реалізовані в більшості мов програмування, вони допомагають краще керувати даними.

Мова сценаріїв Bash теж має свої можливості роботи з масивами. У цій статті ми розглянемо як працюють масиви Bash, як їх створювати і використовувати. У деяких випадках це дуже зручно.

масиви Bash

Масиви оболонки Bash працюють майже так само, як і в інших мовах програмування. Перед тим як ви зможете використовувати масив, його потрібно оголосити. Це можна зробити декількома способами, перший з них - це використання команди оболонки declare:

declare -a імя_массіва

Але необов`язково робити саме так, ви можете відразу почати задавати елементи масиву по потрібним номерами:

імя_массіва [XX] = значення

Тут XX позначає індекс масиву. Ще один зручний спосіб створювати масиви рядків Bash - це просто перерахувати всі елементи в круглих дужках:

імя_массіва = ( елемент_1, елемент_2 елемент_3 ... )

Або ви можете відразу поставити індекс масиву для кожного з елементів:

імя_массіва = ([XX] =значення [XX] =значення. . . )

Також можна прочитати значення для масиву з клавіатури або іншого джерела введення:

Відео: Splitting Strings into Arrays - BASH - Linux

read -a імя_массіва

При введенні елементів масиву вони повинні бути розділені символом пробілу. Для отримання значень елементів масиву використовуйте синтаксис фігурних дужок, зверніть увагу, що нумерація елементів масиву, як і в більшості мов починається з нуля:

$ {імя_массіва[XX]}

Це все основні моменти, які будуть вам корисні при використанні масивів, тепер нам залишилося розглянути основні приклади, щоб вам було зрозуміліше як все це працює.

Приклади використання масивів Bash




Тепер розглянемо приклади масивів bash. Спочатку нам потрібно створити масив, який ми будемо використовувати для прикладів, на мій погляд буде простіше використовувати синтаксис з круглими дужками. Взагалі, масиви використовуються в скриптах, але ми будемо їх застосовувати прямо в оболонці Bash. Для початку так буде простіше. Створюємо масив:

$ Echo $ {array [1]}
$ Echo $ {array [2]}
$ Echo $ {array [0]}

Відео: Arrays - Linux Bash Web Scripting - Using Arrays

Найчастіше використовуються масиви рядків Bash, але іноді можуть зустрічатися і цифри. Пам`ятайте про нумерацію? Індекси елементів масиву починаються з нуля. Для виведення значення елемента за індексом можна використовувати і трохи інший синтаксис:

$ Echo $ {array [@]}

Всі елементи, починаючи з номера 1:

$ Echo $ {array [@]: 1: 4}

Щоб дізнатися довжину першого елемента виконайте:

$ Echo $ {# array [@]}




Крім усього іншого, ви можете замінити одні символи в певному елементі масиву або у всьому масиві на інші. Для цього використовуйте:

#! / Bin / bash

array = (перший другий третій четвертий п`ятий)
for i in $ {array [@]}
do
echo $ i
done

Всередині циклу ви можете робити зі значенням елемента все, що вам потрібно. Як я вже писав вище, ви можете прочитати значення для масиву за допомогою функції read:

$ Array = ($ (ls /))

Ускладнити завдання і зробимо скрипт, який буде виводити всі файли з зазначеної директорії, які мають права доступу 755:

#! / Bin / bash

ERR = 27
EXT = 0

if [$ # -ne 1] - then
echo "Використовуйте: $ 0 lt; путьgt; "
exit $ ERR
fi

if [! -d $ 1] - then
echo "Каталог $ 1 не існує"
exit $ ERR
fi

temp = ($ (find $ 1 -maxdepth 1 -type f))

for i in "$ {temp [@]}"
do
perm = $ (ls -l $ i)
if [ `expr $ {perm: 0: 10}:" -rwxr-xr-x "` -eq 10] - then
echo $ {i ## * /}
fi
done

exit $ EXT

Тепер перевіримо наш скрипт на папці / bin. Але перед цим потрібно дати йому права на виконання:


$ ./lsperm.sh

Як бачите, все працює. Крім номерів, в якості індексів для масивів можна використовувати такі рядки. Такі масиви Bash називаються асоціативними і підтримуються вони починаючи з четвертний версії Bash. Для створення асоціативного масиву використовується declare з опцією -A:

$ Declare -A assoc_array
$ Assoc_array [last] = "останній$ Echo $ {assoc_array [first]}
$ Echo $ {assoc_array [last]}

Незважаючи на те що Bash підтримує тільки одномірні масиви, ми можемо виконувати симуляцію роботи з багатовимірними матрицями за допомогою асоціативних масивів:

$ Arr [0,0] = 0
$ Arr [0,1] = 1
$ Arr [1,0] = 2
$ Arr [1,1] = 3 $ unset matrix

висновки

У цій статті ми розглянули як працюють масиви Bash в Linux, як їх створювати, а також як використовувати. Якщо розібратися, то тут немає нічого дуже складного, а масиви можуть стати дуже важливим елементів ваших скриптів.

Поділися в соціальних мережах:

Схожі
Створення і перебір масивів в phpСтворення і перебір масивів в php
Робота з масивами в phpРобота з масивами в php
Як дізнатися pid скриптаЯк дізнатися pid скрипта
Установка bash в windows 10Установка bash в windows 10
Сортування двовимірного масиву на phpСортування двовимірного масиву на php
Як створити асоціативний масив в jаvascriptЯк створити асоціативний масив в jаvascript
Випадковий вибір з масиву в phpВипадковий вибір з масиву в php
Рекурсія в phpРекурсія в php
Написання скриптів на bashНаписання скриптів на bash
Вийшла нова тестова зборка windows 10 з підтримкою bash on ubuntuВийшла нова тестова зборка windows 10 з підтримкою bash on ubuntu
» » Масиви bash