Циклы в Bash
#
Андрей Михайлович Васильев, 2025
Версии презентации
Циклы
#
Для обхода набора значений удобно воспользоваться циклами
for index in 1 2 3 4 5 6 7 8 9 10; do
echo "Индекс: $index"
done
for ((index=0; index < 10; index++)) do
echo "Число: $index"
done
Обход вывода приложения
#
Циклы можно использовать для обработки вывода из приложения
echo 'Файлы, начинающиеся с A'
for file in A*; do
echo "$file"
done
echo 'Проход по PID процессов'
for pid in $(ps -eo pid); do
echo "${pid}"
done
Циклы while
и until
#
Помимо итеративного for в Bash также есть бесконечные циклы while и utlit:
while list-1; do list-2; done
until list-1; do list-2; done
- Цикл
while
будет выполнять свои действия пока условия в list-1
верны
- Цикл
until
будет выполнять свои действия пока условия в list-1
неверны
Выйти из цикла можно с помощью break [n]
Если передать число, тогда выход будет произведён из такого количества циклов
Для перехода к следующей итерации можно воспользоваться continue [n]
Если передать число, то продолжение будет на соответствующем уровне вложенности
Пример цикла while
#
#!/bin/bash
echo
while [ "$var1" != "end" ]
do
echo "Input variable #1 (end to exit) "
read var1 # Not 'read $var1' (why?).
echo "variable #1 = $var1" # Need quotes because of "#"
echo
done
exit 0
Цикл и shift
#
С помощью цикла и shift
можно обойти все аргументы:
until [ -z "$1" ] # Until all parameters used up . . .
do
echo -n "$1 "
shift
done
shift может сдвигать сразу на несколько позиций
Оператор выбора case
/ esac
#
Оператор выбора позволяет сравнить строку с рядом шаблонов. В случае совпадения
шаблона выполняются соответствующие команды
case "$variable" in
"$condition1" )
command...
;;
"$condition2" )
command...
;;
esac