Как использовать BASH для цикла



Попробуйте наш инструмент устранения неполадок

Один из самых простых приемов при создании сценариев bash - это создание цикла, позволяющего автоматически выполнять определенную задачу несколько раз. В конце концов, цикл достигнет заданного тестового состояния и внезапно прекратит выполнение. Подобные циклы отлично работают в bash в Linux и macOS, а также в оболочке bash в Windows 10 и даже в различных оболочках FreeBSD. Естественно, вы можете написать любую команду, которую захотите, в любом цикле и поддерживать выполнение любого процесса в любое время, какое захотите. Хотя мы напишем несколько чрезвычайно простых циклов, вы можете использовать эти навыки для создания любых скриптов, которые вам нравятся.



Есть много способов начать писать скрипт, но для этого обсуждения мы предполагаем, что вы открыли командную строку, выполнив поиск терминала в Dash, щелкнув его в меню KDE, MATE, LX или Whisker или одновременно удерживая Ctrl, Alt и T. Хотя мы будем обсуждать vi / vim и nano как редакторы, вопрос о том, какой редактор использовать, является довольно личным, и вы можете работать с тем, что вам удобно.



Метод 1: цикл до

Возможно, самый простой цикл в bash - это цикл до. Он будет продолжать выполнять команды до тех пор, пока установленное вами условие тестирования не станет истинным. Предположим, вы использовали nano или vi для открытия несуществующего файла с именем until.sh и готовы вставить в него новый текст. Чтобы упростить задачу, мы просто сделаем в вашем терминале что-нибудь, что будет считать до 20.



Начните с ввода следующего:

#! / bin / bash

п = 0



до [$ n -gt 20]

делать

эхо $ n

((п ++))

сделанный

Если вы используете nano, сохраните его, удерживая Ctrl, затем нажав O и, наконец, X, чтобы выйти. Пользователи vi захотят нажать escape, затем введите: wq для сохранения и выхода.

Следующий тип chmod + x до цикла в приглашении сделать его исполняемым, а затем введите ./untilLoop запустить его. После запуска цикл будет продолжать выводить новые числа на ваш терминал, пока переменная n не станет равной 20.

Кстати, первая строка сообщает вашему окружению, какую оболочку загружать при работе с этими скриптами. Некоторые программисты советуют всегда использовать только #! / Bin / sh, чтобы убедиться, что ваш сценарий соответствует определенным стандартам POSIX, но эти простые сценарии не должны вызывать проблем при работе в подавляющем большинстве современных систем.

Метод 2: цикл for

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

Введите либо нано forLoop или же мы forLoop в командной строке и начните вводить следующий сценарий. Пользователи vi должны будут войти в режим вставки, прежде чем они это сделают.

#! / bin / bash

unices = ’GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix’

для unix в $ unices

делать

эхо $ unix

сделанный

Снова сохраните файл, используя метод Ctrl + O, а затем Ctrl + X в nano или метод Esc then: wq в vi перед вводом команды chmod + x forLoop чтобы сделать его исполняемым. Как только вы это сделаете, запустите его, набрав ./forLoop по запросу. Цикл for заставляет команду echo работать по очереди с каждым из элементов переменной unices. Вы можете еще раз заменить этот список любым аргументом и заменить echo любой командой для автоматизации длинных процессов.

Метод 3: цикл while

Начните редактировать третий файл с именем whileLoop, используя nano, vi или любые другие редакторы, которые вы хотите использовать. Если вы предпочитаете использовать графический текстовый редактор, то вы можете сделать это и с любым из этих проектов, если убедитесь, что поместили файл в тот же каталог, с которым вы работаете, из командной строки. .

Внутри этого файла вам нужно добавить строки:

#! / bin / bash

п = 0

а [$ n -le 20]

делать

эхо $ n

((п ++))

сделанный

Сохраните файл так же, как и остальные, а затем выйдите из текстового редактора. После выхода введите команду chmod + x whileLoop чтобы вы могли выполнить его, а затем запустить ./ whileLoop запустить его. Вы увидите тот же результат, что и сценарий untilLoop из первого метода, поскольку он считает от 0 до 20 более чем за доли секунды.

Это отличная демонстрация того факта, что есть несколько способов делать что-то, когда вы работаете с циклами таким образом. Хотя технически нет неправильного способа сделать это, вы, вероятно, встретите авторов сценариев, которые утверждают, что вам следует писать сценарии ближе к тому, как это делает язык программирования C, или, альтернативно, другие могут посоветовать вам не делать этого. Честно говоря, верных способов решения проблемы, наверное, много.

Не стесняйтесь удалять свои сценарии, когда закончите с ними практиковаться.

3 минуты на чтение