В языке программирования в основном существует три типа циклов (for, while и until). Все три типа петель важны по-разному. Между циклами while и until нет большой разницы, но цикл for работает совершенно иначе, чем эти два. Вот почему вы можете использовать эти циклы для создания интерактивных скриптов как пользователь bash.
Таким образом, изучение примеров bash может помочь вам улучшить свои навыки в создании скриптов. Итак, в этой статье мы включим 10 классных и потрясающих примеров циклов bash, которые вы можете попробовать, чтобы улучшить свои навыки написания сценариев.
В этом разделе мы объясним различные примеры и подходы, которые мы использовали в циклах.
Вы можете использовать команду seq в цикле for для создания последовательности чисел. Например, у вас есть bash-скрипт «File.sh», содержащий следующий код:
#!/bin/bash for A in $(seq 5 2 25) do echo "Числа, равные $A являются" done
Вы получите следующий результат после выполнения скрипта в терминале:
./File.sh
destroyer@andreyex:-$ ./File.sh Числа, равные 5, являются Числа, равные 7, являются Числа, равные 9, являются Числа, равные 11, являются Числа, равные 13, являются Числа, равные 15, являются Числа, равные 17, являются Числа, равные 19, являются Числа, равные 21, являются Числа, равные 23, являются Числа, равные 25, являются
Используя сценарий bash, вы можете использовать циклы for для переименования нескольких файлов. Например, у вас есть несколько файлов .txt и вы хотите добавить текущую дату с именем. Итак, вот пример скрипта, который вы можете использовать:
#!/bin/bash for A in $(ls *.txt); do mv $A (basename $A .txt)_$(date %d%m%).txt done
Точно так же вы можете изменить расширения файла с помощью одного скрипта. Итак, давайте изменим расширение .txt на .sh с помощью следующего скрипта:
#!/bin/bash for file in *.txt; do mv -- "$file" "{file%.txt}.sh" done
Когда в цикле не определено условие завершения, он называется бесконечным циклом. В этом примере цикла Bash мы рассмотрим бесконечный цикл for в bash. Следующий бесконечный цикл for определяется двойной точкой с запятой ( ; ; ) и не содержит начальной части, действия или завершения.
Приведенный ниже сценарий будет продолжаться до тех пор, пока вы не нажмете Ctrl+C или не наберете «quit» в качестве ввода. Этот скрипт будет печатать каждое число от 10 до 50, которое задано в качестве входных данных. В противном случае он напечатает «число вне допустимого диапазона».
#!/bin/bash #infinite loop for (( ; ; )) do echo "Введите номер между 10 и 50" read n if [ $n == "quit" ] then echo "terminated" exit 0 fi if (( $n < 10 || $n > 50 )) then echo "Номер находится вне зоны" else echo "Это число равно $n" fi done
Мы дали 45 и 23 допустимых ввода в приведенном выше скрипте. После этого мы печатаем 2 в качестве входных данных, что сообщает на выходе, что «Номер находится вне зоны». После этого, чтобы закрыть скрипт, набираем quit в качестве ввода. Здесь вы также можете нажать Ctrl+C, чтобы выйти из бесконечного цикла.
Из названия цикла из трех выражений известно, что он состоит из трех выражений, также называемых управляющими выражениями. Первое выражение (EXP1) — это инициализатор, второе выражение (EXP2) — проверка цикла или условие, а третье выражение (EXP3) — это выражение/шаг подсчета. Давайте запустим цикл из трех выражений в bash:
#!/bin/bash for (( n=5; n>=1; n-- )) do echo "Книга $n" done
Запустив приведенный выше скрипт, вы получите следующий вывод.
~/Documents$ ./file.sh Book 5 Книга 4 Книга 3 Книга 2 Книга 1
Мы использовали цикл until с несколькими условиями в следующем примере цикла bash. В этом сценарии мы взяли «m» и «n», две переменные, значения которых равны 20 и 10 соответственно, и сохранили ограничение в 15. Здесь мы объединяем условия «m» и «n» в цикле, в котором цикл будет выполняться до тех пор, пока значение «m» не станет меньше предела, а «n» больше предела.
#!/bin/bash limit=15 m=20 n=10 until [[ $m -lt $limit || $n -gt $limit ]]; do echo "If M = $m then N = $n" ((m--)) ((n++)) done
После запуска, скрипт будет выполняться до тех пор, пока значения «m» и «n» не сравняются.
В bash вы можете прочитать содержимое файла несколькими способами. В этом примере цикла bash мы будем читать содержимое файла по имени файла. Мы можем использовать следующий скрипт для чтения файла в bash:
#!/bin/bash echo "Содержимое введенного файла является:" while read line do echo $line done <~Documents/AndreyEx.txt
После запуска приведенного выше скрипта вы можете прочитать полное содержимое введенного файла.
Вы можете использовать циклы в скрипте для редактирования файла прямо из терминала. Например, если у нас есть текстовый файл «Example.txt» и мы хотим добавить некоторую информацию, мы можем использовать следующий скрипт:
#!/bin/bash file-Example.txt echo "Введите содержимое в $file" while read line do echo $line >> $file done
Если вы запустите приведенный выше скрипт, он попросит вас ввести данные.
После того, как вы введете данные, нажмите CTRL + D, чтобы сохранить файл, и CTRL + Z, чтобы успешно завершить процесс.
В bash вы можете продолжить оператор цикла после разрыва. Оператор break выходит из цикла и затем передает управление следующему заданному оператору. Итерация номер два начинается после того, как текущая итерация пропускается с тем же оператором continue.
#!/bin/bash num=16 until false do ((num--)) if [[ $num -eq 13 ]] then continue elif [[ $num -le 4 ]] then break fi echo "AndreyEx = $num" done
В следующем сценарии bash вы можете видеть, что когда «число» равно 13, он пропускает остальную часть тела цикла и переходит к следующей итерации. Точно так же цикл прерывается, когда «число» меньше или равно 4.
Приведенный выше сценарий показывает, что цикл начинается с 15, прерывается на 13 и продолжается до 5.
Вы можете рассчитать среднее значение, запустив скрипт в цикле bash. При этом пользователь может рассчитать среднее число чисел в пределах определенного диапазона. Следующий скрипт вычисляет среднее значение введенных пользователем данных.
#!/bin/bash marks="0" AVERAGE="0" SUM="500" NUM="5" while true; do echo -n "Введите свои оценки или нажмите "q", чтобы прервать "; read marks; if (("$marks" < "0")) || (("$marks" > "100")); then echo "Пожалуйста, введите свои оценки" elif [ "$marks" == "q" ]; then echo "средние оценки составляют: $AVERAGE%" break else SUM=$[$SUM + $marks] NUM=$[$NUM + 1] AVERAGE=$[$SUM / $NUM] fi done
Если введенное значение выходит за пределы допустимого диапазона, печатается сообщение «Пожалуйста, введите свои оценки». Когда пользователь нажимает «q» после ввода всех оценок, скрипт вычисляет приблизительное среднее значение всех введенных чисел.
В bash вы можете читать отдельные аргументы командной строки, используя циклы. Сценарий печатает отформатированные значения аргументов. Мы запускаем аргументы командной строки в bash, используя цикл while в следующем скрипте. Благодаря этому вы напечатаете значение, передавая параметр допустимого значения аргумента с помощью одной команды.
#!/bin/bash while getopts N:F:M: OPT do case "${OPT}" in N) name=${OPTARG};; F) fathername=${OPTARG};; M) mothername=${OPTARG};; *) echo "Invalid" exit 1;; esac done printf "Name:$name\nFather Name:$fathername\nMother Name:$mothername\n"
Таким образом, вы можете вывести отформатированные значения аргументов на вывод, запустив приведенный выше скрипт в bash.
Итак, это была краткая информация о 10 крутых и потрясающих примерах циклов bash, которые вы можете изучить. Мы использовали различные типы циклов, чтобы легко создать интерактивный сценарий. Кроме того, мы также объяснили основные подходы, используемые в приведенных выше примерах.