Как манипулировать данными и контролировать их с помощью Bash Array

Kak Manipulirovat Dannymi I Kontrolirovat Ih S Pomos U Bash Array



Переменная-массив используется в любом языке программирования для хранения нескольких значений с использованием индекса. Индекс массива может быть числом или строкой. Массив, содержащий числовой индекс, называется «числовым массивом», а массив, содержащий строковое значение в качестве индекса, называется «ассоциативным массивом». В Bash можно создавать как числовые, так и ассоциативные массивы. Методы манипулирования и контроля данных массива Bash подробно показаны на 15 примерах в этом уроке.

Список контента:

  1. Определить массив по индексу
  2. Определите массив с несколькими значениями
  3. Определите ассоциативный массив
  4. Подсчитайте значения массива
  5. Чтение значений массива с помощью цикла
  6. Прочитайте конкретные значения массива
  7. Вставьте значения массива
  8. Чтение содержимого файла в массив
  9. Объедините значения массива
  10. Измените значения массива
  11. Удалить значения массива
  12. Найдите и замените значения массива
  13. Используйте массив в качестве аргумента функции
  14. Вернуть массив из функции
  15. Сделать массив пустым

Определить массив по индексу

Метод объявления массива путем упоминания последовательных или непоследовательных числовых индексов показан в следующем скрипте. Этот тип массива называется числовым массивом. Здесь массив «$books» создается путем определения трех последовательных индексов, а массив «$products» создается путем определения четырех непоследовательных индексов. Все значения обоих массивов печатаются с помощью функции printf.







#!/бин/баш

#Определяем индекс массива в последовательном порядке

книги [ 0 ] '=' «Изучение bash Shell»

книги [ 1 ] '=' «Операции по кибербезопасности с bash»

книги [ 2 ] '=' «Советы для профессионалов по командной строке Bash»

эхо 'Все значения первого массива:'

печать '%s\n' ' ${книги[@]} '

#Определяем индекс массива в непоследовательном порядке

продукты [ 10 ] '=' 'Ручка'

продукты [ 5 ] '=' 'Карандаш'

продукты [ 9 ] '=' 'Рулар'

продукты [ 4 ] '=' «Бумага формата А4»

эхо

эхо 'Все значения второго массива:'

печать '%s\n' ' ${продукты[@]} '

Выход :



Следующий вывод появляется после выполнения сценария. Значения обоих массивов выводятся на вывод. Порядок индексов сохраняется во время печати для массива непоследовательных индексов:



  п1





Перейти наверх

Определите массив с несколькими значениями

Числовой массив с несколькими значениями можно объявить с помощью команды «объявить» с опцией -a или без использования команды «объявить». В следующем сценарии первый массив объявляется с помощью команды «объявить», а второй массив создается без использования команды «объявить».



#!/бин/баш

#Объявляем числовой массив с помощью ключевого слова «declare»

объявить имена '=' ( 'Майкл' 'Дэйвид' 'Александр' 'Томас' 'Роберт' 'Ричард' )

#Распечатываем значения массива

эхо 'Все значения первого массива:'

печать '%s\n' ' ${names[@]} '

#Объявляем числовой массив без ключевого слова «объявить»

книги '=' ( «Руководства по написанию сценариев оболочки» «Биш Баш Бош!» «Изучите Bash быстро» )

#Добавить новую строку

эхо

#Распечатываем значения массива

эхо 'Все значения второго массива:'

печать '%s\n' ' ${книги[@]} '

Выход :

Следующий вывод появляется после выполнения сценария. Значения обоих массивов напечатаны здесь:

  п2

Перейти наверх

Определите ассоциативный массив

Массив, который содержит строковое значение в качестве индекса, называется ассоциативным массивом. Опция -A используется с командой «объявить» в Bash для создания ассоциативного массива Bash. В следующем скрипте первый ассоциативный массив объявляется путем отдельного упоминания индексов, а второй массив объявляется путем упоминания всех пар ключ-значение во время объявления массива.

#!/бин/баш

#Объявляем переменную ассоциативного массива без значения

объявить сотрудник

#Назначаем значение отдельно, определяя индекс

сотрудник [ 'идентификатор' ] '=' '78564'

сотрудник [ 'имя' ] '=' «Доступные актеры»

сотрудник [ 'почта' ] '=' 'ГЕНЕРАЛЬНЫЙ ДИРЕКТОР'

сотрудник [ 'зарплата' ] '=' 300000

#Распечатываем два значения массива

эхо «Идентификатор сотрудника: ${employee[id]} '

эхо 'Имя сотрудника: ${сотрудник[имя]} '

#Объявляем ассоциативный массив со значениями

объявить курс '=' ( [ код ] '=' 'CSE-206' [ имя ] '=' 'Объектно-ориентированного программирования' [ кредитный_час ] '=' 2.0 )

#Добавить новую строку

эхо

#Распечатываем два значения второго массива

эхо 'Название курса: ${курс[имя]} '

эхо «Кредитный час: ${курс[credit_hour]} '

Выход :

Следующий вывод появляется после выполнения сценария. Здесь печатаются конкретные значения ассоциативного массива с указанием значения ключа или индекса:

  п3

Перейти наверх

Подсчитайте значения массива

Метод подсчета суммы элементов числового массива и ассоциативного массива показан в следующем скрипте:

#!/бин/баш

#Объявляем числовой массив

объявить имена '=' ( 'Майкл' 'Дэйвид' 'Александр' 'Томас' 'Роберт' 'Ричард' ) ;

эхо «Длина числового массива равна ${#names[@]} '

#Объявляем ассоциативный массив

объявить курс '=' ( [ код ] '=' 'CSE-206' [ имя ] '=' 'Объектно-ориентированного программирования' [ кредитный_час ] '=' 2.0 )

эхо «Длина ассоциативного массива равна ${#курс[@]} '

Выход :

Следующий вывод появляется после выполнения сценария. Длина числового и ассоциативного массивов указана здесь:

  п4

Перейти наверх

Чтение значений массива с помощью цикла

Способ чтения всех значений числового массива и ассоциативного массива с помощью цикла for показан в следующем скрипте:

#!/бин/баш

#Объявляем числовой массив

объявить книги '=' ( «Руководства по написанию сценариев оболочки» «Биш Баш Бош!» «Быстро выучите Bash» )

#Распечатываем значения числового массива

эхо «Значения числового массива:»

для в в ' ${книги[@]} '

делать

эхо ' '

сделанный

эхо

#Объявляем ассоциативный массив со значениями

объявить клиенты '=' (

[ идентификатор ] '=' 'Н-5623'

[ имя ] '=' 'Мистер. Анаф'

[ адрес ] '=' «6/А, Дханмонди, Дакка».

[ телефон ] '=' '+8801975642312' )

#Распечатываем значения ассоциативного массива

эхо «Значения ассоциативного массива:»

для к в ' ${!клиенты[@]} '

делать

эхо ' => ${клиенты[$k]} '

сделанный

Выход :

Следующий вывод появляется после выполнения сценария. Здесь значения числового массива и пары ключ-значение ассоциативного массива выводятся на вывод:

  п5

Перейти наверх

Прочитайте конкретный диапазон значений массива

Значения массива определенного диапазона индексов показаны в следующем скрипте. В скрипте определен числовой массив из четырех элементов. Два значения массива из второго индекса массива печатаются позже.

#!/бин/баш

#Объявляем числовой массив

объявить торты '=' ( 'Шоколадный торт' 'Ванильный торт' 'Краснобархатный пирог' 'клубничный пирог' )

#Распечатываем конкретные значения массива

эхо «Второй и третий элементы значений массива:»

печать '%s\n' ' ${торты[@]:1:2} '

Выход :

Следующий вывод появляется после выполнения сценария. Второе и третье значения массива — «Ванильный торт» и «Красный бархатный торт», которые выводятся на выходе:

  стр.6

Перейти наверх

Вставьте значения массива

Метод добавления нескольких значений в конец массива показан в следующем скрипте. Основной массив «$books» содержит три элемента, и два элемента добавляются в конец массива «$books».

#!/бин/баш

#Объявляем числовой массив

объявить книги '=' ( «Руководства по написанию сценариев оболочки» «Биш Баш Бош!» «Быстро выучите Bash» )

#Распечатываем значения массива перед вставкой

эхо 'Значения массива:'

печать '%s\n' ' ${книги[@]} '

эхо

книги '=' ( ' ${книги[@]} ' «Библия командной строки Linux и сценариев оболочки» «Расширенное руководство по написанию сценариев Bash от Менделя Купера» )

#Распечатываем значения массива после вставки

эхо «Значения массива после вставки двух значений:»

печать '%s\n' ' ${книги[@]} '

Выход :

Следующий вывод появляется после выполнения сценария. Значения массива до и после вставки новых значений выводятся на вывод:

  стр.7

Перейти наверх

Считайте содержимое файла в массив

Создайте текстовый файл с именем «fruits.txt» со следующим содержимым, чтобы протестировать сценарий этого примера:

фрукты.txt

манго

Джекфрут

Ананас

Апельсин

Банан

В следующем скрипте содержимое файла сохраняется в массиве с именем «$data». Здесь каждая строка файла сохраняется как каждый элемент массива. Далее значения массива печатаются.

#!/бин/баш

#Читаем имя файла от пользователя

читать -п «Введите имя файла:» имя файла

если [ $имя_файла ]

затем

#Читаем содержимое файла в массив'

данные '=' ( ` кот ' $имя_файла ' ` )

эхо «Содержимое файла приведено ниже:»

#Читаем файл построчно

для линия в ' ${данные[@]} '

делать

эхо $строка

сделанный

быть

Выход :

Следующий вывод появляется после выполнения сценария. Вывод, отображаемый командой «cat», и вывод сценария аналогичны, поскольку доступ к одному и тому же файлу осуществляется командой «cat» и сценарием:

  стр.8

Перейти наверх

Объедините значения массива

Новый массив создается путем объединения значений нескольких массивов. В следующем скрипте определяются два числовых массива строк. Затем создается новый массив путем объединения значений этих массивов.

#!/бин/баш

#Объявляем первый массив

объявить имяСписок1 '=' ( 'Майкл' 'Дэйвид' 'Александр' 'Томас' )

эхо «Первые значения массива:»

печать '%s, ' ${nameList1[@]}

эхо

#Объявляем второй массив

объявить имяСписок2 '=' ( 'Роберт' 'Ричард' )

эхо «Значения второго массива:»

печать '%s, ' ${nameList2[@]}

эхо

#Создаем новый массив, объединив два массива

комбинированный_массив '=' ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

эхо «Объединенные значения массива:»

печать '%s, ' ${combined_array[@]}

эхо

Выход :

Следующий вывод появляется после выполнения сценария. Здесь на выходе выводятся значения трех массивов. Третий массив содержит все значения первого и второго массива:

  стр.9

Перейти наверх

Измените значения массива

Метод обновления одного или нескольких значений массива путем упоминания индекса показан в следующем скрипте:

#!/бин/баш

#Объявляем первый массив

объявить список имен '=' ( 'Майкл' 'Дэйвид' 'Александр' 'Томас' )

эхо 'Значения массива:'

печать '%s, ' ${nameList[@]}

эхо

#Обновляем второе значение массива

список имен [ 1 ] '=' 'Роберт'

эхо «Значения массива после обновления:»

печать '%s, ' ${nameList[@]}

эхо

Выход :

Следующий вывод появляется после выполнения сценария. Значения основного массива и обновленных массивов выводятся на вывод:

  стр.10

Удалить значения массива

Команда «unset» используется для удаления определенного элемента или всех элементов массива. В следующем скрипте удаляется второй элемент массива.

#!/бин/баш

#Объявляем числовой массив

объявить книги '=' ( «Руководства по написанию сценариев оболочки» «Биш Баш Бош!» «Быстро выучите Bash» )

#Распечатываем значения массива перед удалением

эхо 'Значения массива:'

печать '%s\n' ' ${книги[@]} '

эхо

#Удаляем второй элемент

не установлен книги [ 1 ]

#Распечатываем значения массива после удаления

эхо «Значения массива после удаления второго значения:»

печать '%s\n' ' ${книги[@]} '

Выход :

Следующий вывод появляется после выполнения сценария. Значения основного массива и значения массива после удаления одного значения выводятся на вывод:

  стр.11

Перейти наверх

Найдите и замените значения массива

В следующем сценарии конкретное значение массива заменяется другим значением, если значение поиска, определенное в шаблоне, соответствует любому значению массива «$names».

#!/бин/баш

#Объявляем первый массив

объявить имена '=' ( 'Майкл' 'Дэйвид' 'Александр' 'Томас' )

#Распечатываем исходные значения массива

эхо «Исходные значения массива:»

печать '%s\n' ' ${names[@]} '

#Генерируем строку после замены значений массива

обновленный_массив '=' ${names[@]/Александр/Ричард}

#Распечатываем значения массива после замены

эхо 'Значения массива после замены:'

печать '%s\n' ' ${updated_array[@]} '

Выход :

Следующий вывод появляется после выполнения сценария. Значения основного массива и значения массива после замены значения выводятся на вывод:

  стр12

Перейти наверх

Используйте массив в качестве аргумента функции

В следующем сценарии переменная массива передается в качестве аргумента функции, а значения этого массива выводятся позже.

#!/бин/баш

#Объявляем массив чисел

объявить цифры '=' ( 10 6 Четыре пять 13 8 )

#Определяем функцию, которая будет принимать значение аргумента

функция ( )

{

#Читаем первый аргумент

цифры '=' 1 доллар

#Распечатываем значения массива

эхо 'Значения массива:'

печать '%d\n' ' ${numbers[@]} '

}

#Вызов функции с массивом в качестве аргумента

функция ' ${numbers[@]} '

Выход :

После выполнения скрипта появится следующий вывод:

  стр. 13

Перейти наверх

Возврат массива из функции

В следующем скрипте функция вызывается с четырьмя числовыми аргументами. Создается массив со значениями аргументов, и этот массив возвращается из функции вызывающей стороне.

#!/бин/баш

#Определяем функцию, которая считывает четыре значения аргументов

функция ( )

{

#Читаем значения аргументов

цифры '=' ( 1 доллар 2 доллара 3 доллара 4 доллара )

#Вернем массив

эхо ' ${numbers[@]} '

}

#Вызов функции с тремя аргументами

return_val =$ ( функция 78 Четыре пять 90 23 )

#Сохраняем возвращаемое значение в массиве

читать на одной <<< $return_val

#Распечатываем значения возвращенного массива

эхо «Значения массива:»

для в в ' ${num[@]} '

делать

эхо ' '

сделанный

Выход :

После выполнения скрипта появится следующий вывод:

Перейти наверх

Сделать массив пустым

Следующий скрипт показывает метод опустошения массива с помощью команды «unset». Общее количество значений массива выводится до и после опустошения массива.

#!/бин/баш

#Объявляем массив чисел

объявить цифры '=' ( 10 6 Четыре пять 13 80 )

эхо «Количество значений массива: ${#numbers[@]} '

#Сделаем массив пустым

не установлен цифры

эхо «Количество значений массива после того, как массив стал пустым: ${#numbers[@]} '

Выход :

Следующий вывод появляется после выполнения сценария. Количество элементов массива стало равным 0 после того, как массив стал пустым:

  стр.15

Перейти наверх

Заключение

В этом руководстве показаны различные методы объявления, доступа, изменения и удаления переменных массива в сценарии Bash с использованием 15 простых примеров. Мы надеемся, что это руководство поможет пользователям Bash подробно узнать об использовании массивов Bash.