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 • Оператор • Цикл