BASH (который обозначает Bourne Again Shell) - это язык сценариев, используемый большинством операционных систем на базе Linux и UNIX.
Вы можете запускать команды BASH в окне терминала один за другим или вы можете добавить команды в текстовый файл для создания сценария оболочки.
Самое замечательное в написании сценариев оболочки - это то, что вы можете запускать их снова и снова. Например, представьте, что вам нужно добавить пользователя в систему, установить их разрешения и управлять исходной средой. Вы можете записать команды на листе бумаги и запустить их при добавлении новых пользователей, или вы можете написать один скрипт и просто передать параметры в этот скрипт.
Языки сценариев, такие как BASH, имеют аналогичные конструкции программирования, как и другие языки. Например, вы можете использовать параметры импорта, чтобы получить ввод с клавиатуры и сохранить их как переменные. Затем вы можете заставить скрипт выполнить определенное действие, основанное на значении входных параметров.
Ключевой частью любого языка программирования и сценариев является возможность повторного запуска одного и того же кода.
Существует несколько способов повторить код (также известный как циклы). В этом руководстве вам будет показано, как написать цикл «для».
за цикл повторяет определенный раздел кода снова и снова. Они полезны, так что серия команд может продолжать работать до тех пор, пока не будет выполнено определенное условие, после чего они остановятся.
В этом руководстве вам будет показано пять способов использования цикла for в сценарии BASH.
Перед началом работы
Прежде чем приступать к использованию примеров цикла for, вам нужно открыть окно терминала и выполнить следующие действия:
-
Войти Скрипты mkdir (подробнее об mkdir здесь).
-
Войти скрипты cd (это изменяет каталог на скрипты ).
-
Войти nano examplen.sh (где N это пример, над которым вы работаете).
-
Введите скрипт.
-
Нажмите CTRL + O для сохранения и CTRL + X выходить.
-
Бежать bash examplen.sh (опять же, с N являясь примером, с которым вы работаете).
Как пройти через список
#! / bin / bashfor number in 1 2 3 4 5doecho $ numberdoneexit 0
Метод BASH для использования циклов «для» несколько отличается от того, как большинство других языков программирования и сценариев обрабатывают «для» циклов. Давайте сломаем скрипт. В BASH "for" loop все, утверждения между делать а также сделанный выполняются один раз для каждого элемента в списке. В приведенном выше примере список - это все, что происходит после слова в (т. е. 1 2 3 4 5). Каждый раз, когда цикл повторяется, следующее значение в списке вставляется в переменную, указанную после слова "за" , В вышеприведенном цикле переменная называется число . Оператор echo используется для отображения информации на экране. Следовательно, этот пример принимает числа от 1 до 5 и выводит их один за другим на экран: Проблема с приведенным выше примером заключается в том, что если вы хотите обработать более крупный список (скажем, от 1 до 500), для ввода всех номеров в первую очередь потребуется возраст. Это приводит нас ко второму примеру, который показывает, как указать начальную и конечную точку: #! / bin / bashfor number in {1..10} doecho "$ number" doneexit 0
Правила в основном одинаковы. Значения после слова " в" составлять список для повторения и каждое значение в списке помещается в переменную (то есть число), и каждый раз, когда цикл повторяется, выражения между делать а также сделанный выполняются. Основное различие заключается в том, как формируется список. Кудрявые скобки {} в основном обозначают диапазон, и диапазон в этом случае составляет от 1 до 10 (две точки разделяют начало и конец диапазона). Поэтому этот пример проходит через каждое число от 1 до 10 и выводит номер на экран следующим образом: Такой же цикл можно было бы написать так: синтаксис, идентичный первому примеру: для числа в 1 2 3 4 5 6 7 8 9 10 В предыдущем примере показано, как перемещаться между начальной и конечной точкой, поэтому теперь мы рассмотрим, как пропускать числа в диапазоне. Представьте, что вы хотите зацикливаться от 0 до 100, но показывать только десятое число. Следующий сценарий показывает, как это сделать: #! / bin / bashfor number in {0..100..10} doecho "$ number" doneexit 0
Правила в основном одинаковы. Существует список, переменная и набор операторов, которые должны выполняться между делать а также сделанный , Список на этот раз выглядит следующим образом: {0..100..10}. Первое число равно 0, а конечный номер равен 100. Третье число (10) - это количество элементов в списке, которое будет пропущено. Таким образом, приведенный выше пример отображает следующий результат: Метод BASH для написания циклов немного странный по сравнению с другими языками программирования. Однако вы можете написать цикл for в аналогичном стиле для языка программирования C, например: #! / bin / bashfor ((number = 1; number <100; number ++)) {if (($ number% 5 == 0)) thenecho "$ number делится на 5" fi} exit 0
Цикл начинается с установки номера переменной в 1 (число = 1 ). Цикл будет продолжать повторяться, в то время как значение числа меньше 100 ( число <100 ). Значение число изменения путем добавления 1 к нему после каждой итерации ( номер ++ ). Все между фигурными фигурными скобками выполняется через каждую итерацию петли. Бит между фигурными скобками проверяет значение число , делит его на 5 и сравнивает остаток с 0. Если остаток равен 0, то число делится на 5 и затем отображается на экране. Например: Если вы хотите изменить размер шага итерации, вы можете изменить номер ++, число = + номер 2 , число = + номер 5 , или же число = + номер 10 и т.п. Это может быть дополнительно уменьшено до Номер + 2 = или же Номер + 5 = . Для циклов можно сделать больше, чем повторять списки чисел. Фактически вы можете использовать вывод других команд в качестве списка. В следующем примере показано, как конвертировать аудиофайлы из MP3 в WAV: #! / Bin / Башдля файла в ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" done
Список в этом примере - это каждый файл с расширением .MP3 в текущей папке, и переменная является файл . мили на галлон команда преобразует MP3-файл в WAV. Тем не менее, вам, вероятно, необходимо установить это, используя первый менеджер пакетов.
Как перемещаться между начальной и конечной точками
Как пропустить числа в диапазоне
Более традиционный взгляд на цикл
Практический пример