Обзор цикла в сценариях оболочки

Для цикла в Shell Scripting, скажем, если мы хотим выполнять задачу или операцию многократно, мы можем писать один и тот же код столько раз, что отнимает много времени и тоже неэффективно. Чтобы избежать подобных сценариев, мы можем использовать циклы, подобные циклу for в языке программирования. Таким образом, цикл for используется для выполнения определенной задачи, такой как сложение / умножение или любая другая операция, в течение определенного числа раз, пока условие завершения не будет выполнено в любой операционной системе. Нам не нужно снова и снова писать один и тот же код, используя цикл for.

Синтаксис для цикла

Синтаксис цикла for в сценариях оболочки может быть представлен по-разному, как показано ниже:

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

for var in list
do
command1
command2
done

Из приведенного выше примера у нас есть предопределенные ключевые слова или встроенные ключевые слова, такие как for, do, done и in. Список - это список переменных или список слов или список чисел, а var - имя переменной во время этой итерации. Если список не предоставлен, то bash примет позиционный параметр, который мы передали в оболочке. В приведенном выше цикле for он будет выполнять все команды, которые существуют между do и done в течение n раз, где n - размер списка. Например, если размер списка 5 с числами от 1 до 5, то во время первой итерации 1 будет сохранен в var, а операции над var будут выполняться телом цикла for, где есть команды.

2. Второй синтаксический метод

for ( ( expr1; expr2; expr3 ))
do
command1
command2
….
done

В приведенном выше синтаксисе, если мы наблюдаем, этот синтаксис аналогичен синтаксису цикла for в языке программирования c. В цикле for есть три выражения, где первое выражение предназначено для инициализации, второе - для условной проверки, а третье - для обновления итератора. Выполнение вышеупомянутого цикла for начнется так, до того, как начнется первая итерация, выполняется expr1, что означает, что инициализация будет выполняться после того, как операции / команды между do и done будут выполняться итеративно, пока expr2 не станет равным true и после каждой итерации expr3 обновит Значение итератора (счетчик), чтобы операции выполнялись со следующим элементом или значением в списке, массиве или строке.

Блок-схема - для цикла в сценариях оболочки

Давайте рассмотрим пример цикла for и обсудим его поток с помощью блок-схемы.

for filename in *.dat
do
echo cp $fname orig_$fname
done

На приведенной выше блок-схеме мы объясняем поток цикла for, который выполняет итерацию по списку имен файлов, и в нем есть четыре шага, таких как поток процесса, значение переменной, процесс и стандартный вывод. В потоке процесса он объясняет, когда цикл for запускается, значение итератора, проверка условия, если оно удовлетворяется, затем запуск процесса, в противном случае процесс завершается. В значении переменной, итерация за итерацией, мы получим имя файла в нем, такое как textfile.dat, и во время процесса он выполнит оператор echo, где он отобразит оператор копирования со старым именем файла и новым именем файла в stdout. Итак, это цикл for, который перебирает список входных имен файлов.

Выход:

Как работает Loop в Shell Scripting?

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

Пример:

for filename in *.txt
do
ls filename
done

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

Выход:

Примеры цикла

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

Пример № 1

Давайте рассмотрим список статических значений в качестве входных данных для цикла for и то, как он будет выполняться, будет показано ниже:

for a day in Fri Thu Wed Tue Mon
do
echo “Todays day is $day”
done

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

Пример o / p: Сегодняшний день: Пт Чт Ср Чт Пн (если мы используем двойные кавычки)

Выход:

Пример № 2

Теперь давайте посмотрим на другой пример, где мы используем в for перед списком ввода, как показано ниже:

Month = “Jan Feb Mar Apr May Jun”
for mon in $Month
do
echo “Month is $mon”
done

В приведенном выше примере мы выполняем цикл for так же, как и в предыдущем примере, но вместо чтения списка ввода мы будем использовать ключевое слово «in». В сценариях оболочки каждая переменная должна быть представлена ​​в двойных кавычках, но есть несколько исключений, например, если мы будем использовать двойные кавычки в $ Month выше для строки цикла, тогда все слова будут обрабатываться как одна строка. Поэтому мы должны позаботиться об этом.

Выход:

Пример № 3

Теперь мы напишем для цикла без списка ввода в операторе цикла for, вместо этого он будет принимать входные аргументы в сценарий и пример, как показано ниже:

Давайте назовем имя скрипта как sample.sh и его содержимое, как показано ниже:

for num
do
echo “Number is $num”
done
./sample.sh 1 2 3 4 5

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

Выход:

Вывод - для цикла в сценариях оболочки

Наконец, это все о цикле в сценариях оболочки. Мы обсудили, что такое цикл в сценариях оболочки, для синтаксиса цикла, его блок-схема, объясняющая поток цикла, как работает цикл в оболочке, и примеры цикла в сценариях оболочки. Я надеюсь, что вы хорошо разберетесь в цикле, как его использовать в сценариях оболочки и выполнить после прочтения этой статьи.

Рекомендуемые статьи

Это руководство к циклу For в сценариях оболочки. Здесь мы обсуждаем введение, Как работает цикл в сценариях оболочки, Блок-схема и Пример цикла for. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Петли в R
  2. Spark SQL Dataframe
  3. Многомерная база данных
  4. Преимущества визуализации данных