Циклы в языке shell
Простой цикл for
for planet in "Меркурий 36" "Венера 67" "Земля 93" "Марс 142" "Юпитер 483"
do
#Разбиение переменной planet на множество аргументов
set -- $planet
echo "$1 в $2,000,000 миль от Солнца"
done
Конструкция set -- предохраняет от неожиданностей, на тот случай если planet будет пустой или будет начинаться с символа -
Если [список] в цикле for не задан, то в качестве оного используется переменная $@ -- список аргументов командной строки
Как это показано в следующем примере
for a
do
echo -n "$a "
done
while
Оператор while может иметь несколько условий. Но только последнее из них определяет возможность продолжения цикла
var1=20;
while [ "$var1" -gt 0 ]
do
echo "$var1"
var1=`expr $var1 - 1`
done
#Несколько условий
var1=20;
while echo "Текущее значение переменной: "; var1=`expr $var1 - 1`; [ "$var1" -gt 0 ]
do
echo "$var1"
done
until
Оператор цикла until проверяет условие в начале каждой итерации, но в отличие от while итерация возможна только в том случае, если условие ложно
Вложенные циклы
outer=1
for a in 1 2 3 4 5
do
echo "Итерация #$outer внешнего цикла"
echo "_______________________________"
inner=1
for b in 1 2 3 4 5
do
echo "Итерация #$inner вложенного цикла"
let "inner+=1"
done
let "outer+=1"
echo
done
continue и break
Команде break может быть передан необязательный параметр, номер вложенного цикла
LIMIT=10
a=0
while [ $a -le $LIMIT ]
do
a=$(($a+1))
if [ "$a" -eq 3 ] || [ "$a" -eq 10 ]
then
continue
fi
echo "$a"
done
Источники
Связанные темы
Использование команды tee в Linux
Использование wget и curl в Linux
Команда chattr и lsattr в Linux
Использование awk Linux Alpine
Блокировка пользователя в Linux
Оптимизация производительности Postgresql
Проверка на необходимость перезапуска после обновления пакетов
Стандартные потоки и перенаправление ввода/вывода в Linux
Архивирование и сжатие файлов в Linux
Полезные команды и скрипты Linux
Условная конструкция if в Linux
Использование оператора select в языке shell
Внутренние и внешние команды linux
Использование конструкции case в Linux