Пример 33-6. Сценарий (бесполезный), который вызывает себя сам

Пример 33-6. Сценарий (бесполезный), который вызывает себя сам

#!/bin/bash

# recurse.sh

# Может ли сценарий вызвать себя сам?

# Да, но есть ли в этом смысл?

RANGE=10

MAXVAL=9

i=$RANDOM

let "i %= $RANGE" # Генерация псевдослучайного числа в диапазоне 0 .. $MAXVAL.

if [ "$i" -lt "$MAXVAL" ]

then

echo "i = $i"

./$0 # Сценарий запускает новый экземпляр себя самого.

fi # если число $i больше или равно $MAXVAL.

# Если конструкцию "if/then" заменить на цикл "while", то это вызовет определенные проблемы.

# Объясните -- почему?.

exit 0

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.2.3 Ссылки на Себя

Из книги C++ автора Хилл Мюррей

5.2.3 Ссылки на Себя В функции члене на члены объекта, для которого она была вызвана, можно ссылаться непосредственно. Например:class x (* int m; public: int readm() (* return m; *) *);x aa; x bb;void f() (* int a = aa.readm(); int b = bb.readm(); // ... *)В первом вызове члена member() m относится к aa.m, а во втором – к bb.m.Указатель на


Правило 5: Какие функции C++ создает и вызывает молча

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

Правило 5: Какие функции C++ создает и вызывает молча Когда пустой класс перестает быть пустым? Когда за него берется C++. Если вы не объявите конструктор копирования, оператор присваивания или деструктор самостоятельно, то компилятор сделает это за вас. Более того, если вы


Как продавали Родину: бесполезный брендинг российских городов Кирилл Халюта, генеральный директор брендинговая компания «Freedomart»

Из книги Цифровой журнал «Компьютерра» № 167 автора Журнал «Компьютерра»

Как продавали Родину: бесполезный брендинг российских городов Кирилл Халюта, генеральный директор брендинговая компания «Freedomart» Опубликовано 04 апреля 2013В последние пять-шесть лет Россию охватила массовая истерия – брендинг территорий. Невысокая цена брендинга,


Пример 2-1. cleanup: Сценарий очистки лог-файлов в /var/log

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Пример 2-1. cleanup: Сценарий очистки лог-файлов в /var/log # cleanup# Для работы сценария требуются права root.cd /var/logcat /dev/null > messagescat /dev/null > wtmpecho "Лог-файлы очищены."Здесь нет ничего необычного, это простая последовательность команд, которая может быть набрана в командной строке с


Пример 11-23. Сценарий, завершающий себя сам с помощью команды kill

Из книги CSS3 для веб-дизайнеров автора Сидерхолм Дэн

Пример 11-23. Сценарий, завершающий себя сам с помощью команды kill #!/bin/bash# self-destruct.shkill $$ # Сценарий завершает себя сам. # Надеюсь вы еще не забыли, что "$$" -- это PID сценария.echo "Эта строка никогда не будет выведена."# Вместо него на stdout будет выведено сообщение "Terminated".exit 0# Какой


Пример 29-1. Сценарий, содержащий ошибку

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Пример 29-1. Сценарий, содержащий ошибку #!/bin/bash# ex74.sh# Этот сценарий содержит ошибку.a=37if [$a -gt 27 ]then echo $afi exit 0В результате исполнения этого сценария вы получите такое сообщение:./ex74.sh: [37: command not foundЧто в этом сценарии может быть неправильно (подсказка: после ключевого слова


Пример 33-7. Сценарий имеющий практическую ценность), который вызывает себя сам

Из книги автора

Пример 33-7. Сценарий имеющий практическую ценность), который вызывает себя сам #!/bin/bash# pb.sh: телефонная книга# Автор: Rick Boivie# используется с его разрешения.# Дополнен автором документа.MINARGS=1 # Сценарию должен быть передан, по меньшей мере, один


Пример H-2. viewdata.sh: Результат преобразования VIEWDATA.BAT в сценарий командной оболочки

Из книги автора

Пример H-2. viewdata.sh: Результат преобразования VIEWDATA.BAT в сценарий командной оболочки #!/bin/bash# Результат преобразования пакетного файла VIEWDATA.BAT в сценарий командной оболочки.DATAFILE=/home/bozo/datafiles/book-collection.dataARGNO=1# @ECHO OFF Эта команда здесь не нужна.if [ $# -lt "$ARGNO" ] # IF !%1==! GOTO VIEWDATAthen less


Хвост, который размахивает собакой

Из книги автора

Хвост, который размахивает собакой Изначально разработанные исключительно командой,работавшей над движком WebKit для Safari, CSS-переходы теперь стали спецификацией в состоянии рабочий черновик в W3C. (У CSS-трансформаций и CSS-анимаций похожее происхождение; о них мы поговорим


30.11. Сервер TCP с предварительным порождением потоков, каждый из которых вызывает accept

Из книги автора

30.11. Сервер TCP с предварительным порождением потоков, каждый из которых вызывает accept Ранее в этой главе мы обнаружили, что версии, в которых заранее создается пул дочерних процессов, работают быстрее, чем те, в которых для каждого клиентского запроса приходится вызывать


30.12. Сервер с предварительным порождением потоков: основной поток вызывает функцию accept

Из книги автора

30.12. Сервер с предварительным порождением потоков: основной поток вызывает функцию accept Последняя рассматриваемая нами версия сервера устроена следующим образом: главный поток создает пул потоков при запуске сервера, после чего он же вызывает функцию accept и передает