Циклы массивов в Bash

В этой статье мы покажем вам различные методы перебора массивов в Bash. Циклы массивов настолько распространены в программировании, что вам почти всегда придется использовать их в любом важном программировании, которое вы делаете. Чтобы помочь с этим, вы должны изучить и понять различные типы массивов и способы их перебора, что мы и представляем в этой статье. Прежде чем мы приступим к основной цели этого учебника / статьи, давайте узнаем немного больше о программировании с помощью оболочки Bash, а затем

В этой статье мы покажем вам различные методы перебора массивов в Bash. Циклы массивов настолько распространены в программировании, что вам почти всегда придется использовать их в любом важном программировании, которое вы делаете. Чтобы помочь с этим, вы должны изучить и понять различные типы массивов и способы их перебора, что мы и представляем в этой статье.

Прежде чем перейти к основной цели этого руководства / статьи, давайте узнаем немного больше о программировании с помощью оболочки Bash, а затем мы покажем некоторые общие конструкции программирования Bash.

Краткое введение в оболочку Bash

Shell - это термин Unix для интерактивного пользовательского интерфейса с операционными системами. Оболочка - это уровень программирования, который понимает и выполняет команды, вводимые пользователем. В некоторых системах оболочка называется интерпретатором команд. По сути, все, что вы можете делать с инструментами ОС с графическим интерфейсом пользователя в Linux, вы обычно можете делать то же самое с оболочкой.

Большинство Unix-подобных операционных систем поставляются с оболочкой, такой как оболочка Bash, оболочка Bourne, оболочка C (csh) и KornShell. Однако эти оболочки не всегда предустановлены в популярных дистрибутивах Linux, таких как Ubuntu, Cent OS, Kali, Fedora и т. Д. Хотя популярная оболочка Bash входит в состав большинства дистрибутивов Linux и OSX.

Оболочка Bash - это улучшенная версия старой оболочки Bourne, которая была одной из первых оболочек Unix / Linux, широко используемых пользователями. Он имел ограниченные возможности по сравнению с сегодняшними оболочками, и из-за этого большая часть работы по программированию почти полностью выполнялась внешними утилитами.

Bash, которая является POSIX-совместимой оболочкой, просто означает , что B ourne- коэффициент усиления ш Ell. Первоначально он создавался как замена оболочки Борна и, следовательно, содержал множество улучшений, недоступных в старых оболочках.

Чтобы узнать тип или версию Bash, установленную в вашей ОС, просто введите следующую команду:

 $ echo $BASH_VERSION 
 3.2.57(1)-release 

Создание сценариев оболочки с помощью Bash

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

  • cat : отображать содержимое файла или объединять два файла вместе. Исходное название команды 'cat' - 'concatenate'.
  • ls : список файлов / папок в каталоге
  • pwd : отображать путь к вашему текущему рабочему каталогу
  • chmod : изменить или изменить права доступа к файлу
  • chown : изменить владельца файла или программы-скрипта
  • mkdir : создать каталог
  • mv : переместить файл или папку из одного каталога в другой.
  • rm : удалить (удалить) файл или каталог
  • cd : изменить текущий рабочий каталог
  • exit : закрыть или выйти из терминала

Есть еще много других базовых команд, не упомянутых здесь, информацию о которых вы можете легко найти, учитывая обширный объем документации в Интернете. Хотя изучение основных команд выше научит вас многому из того, что вам нужно знать.

В этой статье вы могли заметить, что каждая первая строка сценария оболочки начинается с символа shebang или hash-bang. Это особый тип комментария, который сообщает оболочке, какую программу использовать для выполнения файла. Для сценариев оболочки это строка #!/bin/bash

Теперь, когда вы познакомились с некоторыми общими командами Bash, пришло время понять, как использовать массивы и циклы. И, наконец, мы покажем несколько реальных примеров того, как можно перебирать массивы в сценариях Bash.

Циклы в Баше

«Циклы» или «циклы» - это просто конструкция, в которой вы выполняете определенное событие или последовательность команд до тех пор, пока не будет выполнено определенное условие, которое обычно устанавливается программистом. В программировании на Bash нам доступны три типа циклов:

  • пока
  • для
  • до того как
Пока цикл

Если вы когда-либо раньше программировали на каком-либо языке, вы, вероятно, уже знаете о циклах и о том, как их можно использовать для управления потоком программы или сценария в дополнение к if , elif и else . Цикл позволяет перебирать список или группу значений до тех пор, пока не будет выполнено определенное условие.

Ниже приведен синтаксис в while цикла:

 while <list> 
 do 
 <commands> 
 done 

Состояние в while петля может зависеть от ранее объявленных переменных, в зависимости от ваших потребностей. Предположим, мы написали программу с именем count.sh . Программа счетчика печатает числа от 0 до 10. Таким образом, наша программа счетчика будет «зацикливаться» только от 0 до 10.

 #!/bin/bash 
 
 count=0 
 while [ $count -le 10 ] 
 do 
 echo "$count" 
 count=$(( $count + 1 )) 
 done 

Условие здесь - $count -le 10 , которое вернет true значение, пока $count меньше или равна ( -le ) 10. Каждый раз, когда это условие возвращает true do команды между do и done .

До цикла

В дополнении к некоторому while , мы можем также использовать until цикла , который очень похож на в while цикла. Синтаксис until петли такого же , как и в while цикл, однако основное отличие состоит в том , что условие противоположно в while. Здесь команды цикла выполняются каждый раз, когда условие не выполняется или возвращает false .

 #!/bin/bash 
 
 count=0 
 until [ $count -gt 10 ] 
 do 
 echo "$count" 
 count=$(( $count + 1 )) 
 done 

Здесь цикл выполняется каждый раз, когда $count не превышает ( -gt ) 10.

Для цикла

Синтаксически for немного отличается от циклов while или until Эти типы циклов обрабатывают увеличение счетчика за нас, тогда как раньше нам приходилось увеличивать его самостоятельно.

Синтаксис цикла for в Bash:

 #!/bin/bash 
 
 for (( n=1; n<=10; n++ )) 
 do 
 echo "$n" 
 done 

В условии цикла мы сообщаем ему, с какого числа запускать счетчик ( n=1 ), с какого числа завершать счетчик ( n<=10 ) и насколько увеличить счетчик на ( n++ ).

Другой способ использовать этот цикл:

 #!/bin/bash 
 
 for user in Kate Jake Patt 
 do 
 echo "$user" 
 done 

Здесь мы выполняем цикл для каждого экземпляра строки, которым в данном случае являются «Кейт», «Джейк» и «Патт».

Массивы в Bash

В Bash есть два типа массивов. Бывают ассоциативные массивы и массивы с целочисленным индексом. Элементы в массивах часто упоминаются по их порядковому номеру, который представляет собой позицию, в которой они находятся в массиве. Эти номера индексов всегда являются целыми числами, начинающимися с 0.

Ассоциативный массив немного новее, он появился в версии Bash 4.0.

Ниже приведен синтаксис объявления и использования массива с целочисленным индексом:

 #!/bin/bash 
 
 array=( ABCDEFG ) 
 echo "${array[0]}" 
 echo "${array[1]}" 
 echo "${array[2]}" 
 echo "${array[3]}" 
 echo "${array[4]}" 
 echo "${array[5]}" 
 echo "${array[6]}" 

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

Цикл по массивам

Теперь, когда мы увидели и поняли основные команды оболочки Bash, а также основные концепции циклов и массивов в Bash, давайте продолжим и рассмотрим полезный сценарий, использующий циклы и массивы вместе.

В нашем простом примере ниже мы предполагаем, что вы хотите вывести на экран список зарегистрированных пользователей вашего веб-сайта. Список пользователей хранится в переменной users , которую нужно перебрать, чтобы отобразить их.

 #!/bin/bash 
 
 users=(John Harry Jake Scott Philis) 
 for u in "${users[@]}" 
 do 
 echo "$u is a registered user" 
 done 

С помощью этого синтаксиса вы будете перебирать users , при этом каждое имя временно сохраняется в u . [@] сообщает интерпретатору, что это индексированный массив, который мы будем перебирать.

Есть несколько способов использовать циклы массивов в программировании, поэтому не ограничивайте себя тем, что вы видите здесь. Мы просто показали самые простые примеры, которые вы можете улучшить и изменить в соответствии со своим вариантом использования.

comments powered by Disqus