Поиск по сайту:
Боже, не дай мне только написать книгу о книгах! (Г. Лихтенберг).

Bash для цикла в одной строке

26.07.2021
Bash Heredoc

В любом языке программирования или сценариях цикл – квинтэссенция функции. Циклы обычно предназначены для выполнения повторяющейся задачи до тех пор, пока не будет выполнено определенное условие. Bash – это мощный язык сценариев, который поддерживает все основные функции языка сценариев (включая циклы).

Эта статья демонстрирует однострочные циклы for в Bash.

 

Bash для цикла

В bash есть несколько типов циклов – для, пока и до. Каждый тип петли имеет разную структуру. Однако основы остаются прежними. Для новичков эта статья подробно объясняет различные циклы bash и способы их реализации.

Как следует из названия этой статьи , мы сосредоточимся на цикле. Хотя для цикла for обычно требуется несколько строк, мы можем представить его в одной строке, если цикл достаточно прост. Однако этот процесс требует понимания основ bash для цикл.

Для запуска наших кодов bash нам понадобится сценарий оболочки. У меня уже есть фиктивный скрипт для запуска наших кодов.

$ cat dummy.sh

Для петлевой структуры

Это базовая структура цикла for в bash.

for  in [list]
dodone

Вот краткий пример реализации этой структуры цикла for.

for i in {1..5}
do
echo "number: $i"
done

Bash также поддерживает цикл for в стиле C. Если у вас есть опыт программирования на C, тогда будет легко понять цикл for в стиле C.

for ((; ; ))
dodone

Приведем в действие цикл for в стиле C.

for ((i = 1; i <= 5; i++)); do
echo "number: $i"
done

Цикл For также может работать с файлами. В следующем примере цикл будет искать все разделы на диске «/dev/sda» и распечатывать их.

for i in /dev/sda*; do
echo "$i"
done

Одна строка для цикла

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

Читать  SCP с удаленного на локальный в Linux

Сожмем первый пример. Если исключить все новые строки, код будет выглядеть так.

$ for i in {1..5}; do echo "number: $i"; done

Как видите, все новые строки удалены. Вместо этого новые строки заменяются точкой с запятой (;).

Мы можем сделать то же самое с циклами for в стиле C.

$ for ((i = 1; i <= 5; i++)); do echo "number: $i"; done

Взгляните на следующий пример. Все файлы конфигурации внутри «/etc». будет скопирован в качестве резервной копии в каталог «~/backup».

$ for i in /etc/*.conf; do cp $i /home/viktor/backup; done

Для цикла с условными выражениями

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

Здесь следующий цикл for напечатает все четные числа в фиксированном диапазоне.

for i in {1..10}; do
if [ $((i%2)) -eq 0 ]; then
echo "$i even"
fi
done

Можно выразить весь этот цикл в одной строке. Как и раньше, замените все символы новой строки точками с запятой (;).

$ for i in {1..10}; do if [ $((i%2)) -eq 0 ]; then echo "$i even"; fi; done

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

 

Разные примеры

Вот несколько строк для циклов для справки.

$ for i in 1 2 3 4 5 ; do echo "number: $i"; done
$ for i in cpu motherboard ram psu gpu; do echo "computer part: $i"; done

Следующий пример будет бесконечным циклом.

$ for (( ; ; )); do echo "to infinity!"; done

Последняя мысль

Эта статья демонстрирует различные эффективные примеры однострочного цикла. Обычный цикл for очень легко превратить в одну строку. Надеюсь, после практики этих примеров читатели поймут, как использовать bash for loop в одной строке.

Удачных вычислений!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Smurf атака представляет собой тип отказа в обслуживании атаки (DOS),…

Спасибо!

Теперь редакторы в курсе.