Программирование на Shell (Unix)


ПРОГРАММНЫЕ СТРУКТУРЫ - часть 7


При вызове "holding Hello HELLO ONE" на экране будет:

Холдинг: Привет! Нет такой фирмы Холдинг: Not-Net

Еще пример.

### # subdir: Выдает имена всех поддиректориев # директория с именем $dir for i in $dir/* do if [ -d $i ] then echo $i fi done

Следующий расчет иллюстрирует полезный, хотя и с долей трюкачества, способ повторения одних и тех же действий несколько раз. Переменная "i" принимает здесь пять значений: 1, 2, 3, 4, 5, но внутри цикла эта переменная отсутствует и поэтому ее значение никакой роли не играет и ни чего не меняет. С таким же успехом переменная "i" могла принимать значения, скажем ф о к у с , а в результате точно также было бы пять раз повторено одно и то же вычисление содержимого цикла без изменений.

### # print-5: Организации пятикратного выполнения команды for i in 1 2 3 4 5 do cat file-22 > /dev/lp done

Расчет "print-n" иллюстрирует еще одну полезную возможность в использовании цикла "for". Здесь, после "for i ...", отсутствуют "in ..." и перечень имен, т.е. перечнем имен для "i" становится перечень параметров, а следовательно количество печатаемых экземпляров можно менять.

### # print-n: Задание числа копий # через параметры for i do cat file-22 > /dev/lp done

Смысл не изменится, если первую строку расчета записать как

for i in $*

поскольку значение "$*" - есть список значений параметров.

Отметим различие в специальных переменных "$*" и "$@", представляющих перечень параметров. Первый представляет параметры, как строку, а второй, как совокупность слов.

Пусть командный файл "cmp" имеет вид:

for i in "$*" do echo $i done echo for i in "$@" do echo $i done

При вызове

cmp aa bb cc

на экран будет выведено

aa bb cc aa bb cc

5.5. Оператор цикла с истинным условием ("while")

Структура "while", также обеспечивающая выполнение расчетов, предпочтительнее тогда, когда неизвестен заранее точный список значений параметров или этот список должен быть получен в результате вычислений в цикле.




Начало  Назад  Вперед



Книжный магазин