У меня возникают проблемы с правильной комбинацией точек с запятой и/или фигурными скобками. Я хотел бы сделать это, но как однострочный из командной строки:
Кстати, если вы введете его в качестве многострочного (как вы показываете) в командной строке, а затем вызовите историю со стрелкой вверх, вы получите ее на одной строке, правильно помеченной.
Также можно использовать команду sleep во время условия. Сделать однострочный слой более чистым imho.
Колон всегда «истинно»:
Вы можете использовать точки с запятой для разделения операторов:
Вы также можете использовать команду until :
Обратите внимание, что в отличие от while , until будет выполнять команды внутри цикла, пока условие проверки имеет статус выхода, который не равен нулю.
Использование цикла while :
Использование цикла for :
Другой способ: until :
Очень простой бесконечный цикл. )
Отправляй свой вопрос:
Мне нравится использовать точки с запятой только для инструкции WHILE, и && оператора, чтобы сделать цикл более чем одним.
Поэтому я всегда делаю это так
Для простого просмотра процесса используйте watch вместо
Если вы хотите, чтобы цикл while останавливался после некоторого условия, и ваша команда foo возвращает ненулевое значение при выполнении этого условия, вы можете заставить цикл прерываться следующим образом:
Например, если команда foo удаляет вещи в пакетном режиме и возвращает 1, когда нечего удалять.
Это хорошо работает, если у вас есть собственный скрипт, который должен выполнять команду много раз, пока не произойдет какое-либо условие. Вы пишете скрипт для выхода с 1 когда условие выполнено, и выходом с 0 когда он должен быть запущен снова.
Портал администраторов Debian/Ubuntu Linux.
Разделы
- Console (6)
- KDE (5)
- X11 (6)
- Базы данных (9)
- Без рубрики (3)
- Вебсервер (9)
- Инсталляция (10)
- Клиенты (3)
- Локализация (3)
- Мультимедия (13)
- Поисковые машины (4)
- Программирование (7)
- Разное (10)
- Сеть (9)
- Системное (19)
- Уроки (5)
- Файловая система (7)
- Юмор (3)
Популярное
Календарь
| Пн | Вт | Ср | Чт | Пт | Сб | Вс |
|---|---|---|---|---|---|---|
| « Окт | ||||||
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | |
Архив
Партнеры
Бесконечный цикл на bash
Иногда нужно запустить что то, работающее бесконечно долго и много раз. Например, какой нибуть скрипт — который парсит данные. И все время начинаю искать или вспоминать синтаксис баша, как на нем реализовать беспоконечный цикл. Наконец решил занести в закладки — вот он.
while true; do ./my_scripts; sleep 10; done;
./my_scripts — это наш многоразовый скрипт
sleep 10 — добавил для примера, что бы систему не грузить.
Пользуйтесь на здоровье.
5 Responses to Бесконечный цикл на bash
cat /dev/urandom | grep linuzzz
А почему не через крон?
Шумомер, потому, что иногда нужно выполнять операцию, которая не отнимает много времени и ресурсов, но выполнять её надо в бесконечном цикле, т.е как только она выполнилась, выполнять заново. Это может быть, например, какой нибудь проверкой.
А если будешь кроном, то не сможешь отследить, завершился скрипт или нет. И результат выполнения скрипта будет не известен, а внутри скрипта можно выполнять различные проверки, защищая от ошибок.
Относительно часто возникает необходимость в бесконечном цикле. И постоянно нахожу его тут :о)
You can use : special command with while loop to tests or set an infinite loop or an endless loop. An infinite loop occurs when the condition will never be met, due to some inherent characteristic of the loop. There are a few situations when this is desired behavior. For example, the menu driven program typically continue till user selects to exit his or her main menu (loop). To set an infinite while loop use:
- true command — do nothing, successfully (always returns exit code 0)
- false command — do nothing, unsuccessfully (always returns exit code 1)
- : command — no effect; the command does nothing (always returns exit code 0)
Syntax
Use : command to set an infinite loop:
Use the true command to set an infinite loop:
Use the false command to set an infinite loop:
Note the first syntax is recommended as : is part of shell itself i.e. : is a shell builtin command.
A menu driven program using while loop
The following menu driven program typically continues till user selects to exit by pressing 4 option. The case statement is used to match values against $choice variable and it will take appropriate action according to users choice. Create a shell script called menu.sh:
Save and close the file. Run it as follows: