Приведем пример сценария, также реализующего задачу вычисления факториала с использованием until. Обращаем внимание на условие выполнения оператора цикла (-le) в первом случае и условия окончания (-gt) – во втором.
Текст сценария scr9
РЕЗУЛЬТАТЫ и пояснения
#!/bin/bash
let p=5
let i=1
let f=1
until [ $i -gt $p ]
do
let f=f*i
let i=i+1
done
echo " $p $f"
echo
echo press key
read q
Если сценарий вызвать следующим образом,
scr9
то получим следующие результаты.
5 120
press key
Последний вид оператора цикла имеет такой формат записи.
For var in список
do
Команды
Done
При такой записи оператора цикла переменная var последовательно приобретает значения из списка. Цикл выполняется столько раз, сколько элементов в списке. Вместо списка может быть записан шаблон имени файла. Тогда будут перебираться все файлы из текущего каталога, имя которых совпадает с шаблоном. Например, если после in записана *, то цикл выполнится столько раз, сколько файлов в текущем каталоге, а значения переменной var будет последовательно равно именам всех таких файлов
Приведем примеры сценариев с оператором for.
Текст сценария scr10
РЕЗУЛЬТАТЫ и пояснения
#!/bin/bash
clear
echo
echo
echo "= for 1 ="
let l=0
for x in p q r
do
let l=l+1
echo " $l $x"
done
echo
echo " = for 2 ="
echo
let l=1
for p in *
do
echo " $l $p"
l=l+1
done
echo
echo " = for 3 ="
echo
let l=1
for p in *
do
if [ -f $p ];
then
echo " $l $p"
let l=l+1
fi
done
echo press key
read q
Если сценарий вызвать следующим образом,
scr10
то получим следующие результаты.
= for 1 =
Список состоит из трех элементов и будет выполнен три раза. Параметр цикла х приобретет значения из этого списка.
1 p 2 q 3 r
= for 2 =
1 scr10
= for 3 =
2 scr10
press key
Следующая управляющая конструкция реализует структуру множественного выбора. Она записывается следующим образом