Linux. Циклы for, while и until
Оператор for служит для выполнения одной или нескольких команд указанное количество раз. Общая форма этого оператора, реализующего цикл:
for var in слово1 слово2 … do команда команда ....... done
Пожалуй, самый простой пример цикла for в bash-скриптах — это перебор списка простых значений:
for var in first second third do echo "The $var item" done
The first item The second item The third item
Один из самых распространённых вариантов использования циклов for в bash-скриптах заключается в обходе файлов, находящихся в некоей директории, и в обработке этих файлов.
for file in /home/evgeniy/* ; do if [ -d "$file" ] ; then echo "$file — это директория" elif [ -f "$file" ] ; then echo "$file — обычный файл" else echo "$file — что-то еще" fi done
В скриптах можно использовать циклы for, описание которых выглядит очень похожим на циклы в стиле C:
for (( i = 1; i <= 10; i++ )) ; do echo "number is $i" done
Еще один способ организации цикла заключается в том, чтобы передать for результат работы некой команды:
for i in $(ls *.html) ; do cp $i $i.bak done
В теле цикла можно использовать любые команды, в том числе — запускать другие циклы. Чаще всего вложенные циклы используют для обработки файлов. Так, внешний цикл занимается перебором строк файла, а внутренний уже работает с каждой строкой.
IFS=$'\n' for entry in $(cat /etc/passwd) ; do echo "Values in $entry" IFS=: for value in $entry ; do echo $value done done
Циклы while и until
Оператор while выполняет тело цикла, пока какое-то условие истинно, т.е. выражение или команда возвращают нулевой код. Оператор until наоборот, выполняет тело цикла, пока условие ложно, т.е. код возврата выражения или команды отличен от нуля.
Простой пример цикла while:
count=0 while [ $count -lt 5 ] ; do (( count++ )) echo $count done
1 2 3 4 5
Простой пример цикла until:
count=0 until [ $count -ne 5 ] ; do (( count++ )) echo $count done
1 2 3 4 5
Поиск: Bash • IFS • Linux • for • until • while • Оператор • Цикл