Сценарий, который не является конечным

225
Gefolge

Я набрал скрипт, чтобы проверить некоторые конфигурации на серверах Linux из списка. В списке слишком много серверов, поэтому я разделил этот список 10 на 10 с помощью цикла ниже:

... ... for ((i=0; i <= $serverCounter; i+=15)) do if [ $i -ge $serverCounter ] then exit else echo $i Kontrol $list & ((first+=15)) ((last+=15)) fi done ... ... 

Но в этой ситуации я не могу выйти из этого цикла. Вы можете видеть, что я добавил условие if для выхода, но оно не работает (я не знаю почему).

Как я могу выйти из этого цикла без "&", что в EOL (строка функции Kontrol)

0
Ваш тест `$ i -ge $ serverCounter` избыточен с тестом в цикле for (только в случае, когда` $ i -eq $ serverCounter`). Как написано, ваш код будет по-прежнему запускать N параллельных экземпляров `Kontrol`, где N равно` serverCounter / 15`, поэтому ваша проблема может заключаться в том, что все эти экземпляры в конечном итоге перегрузят вашу систему, и у вас не останется достаточно CPU для продолжения цикла. Возможно, вам придется написать что-то более сложное, чтобы никогда не иметь больше K экземпляров Kontrol, запущенных одновременно. xenoid 5 лет назад 5
Ваш цикл будет выполняться конечное количество раз, как он есть. Я никогда не буду больше, чем serverCounter, потому что он будет существовать, если он равен или больше, чем serverCounter, как есть. Ramhound 5 лет назад 1
на самом деле нет проблем с запуском и отделкой. Я не могу увидеть процесс в ps -ef, поэтому скрипт может завершиться, но я не могу попасть в экран bash после последнего контроля. просто курсор мигает. Проблема в перенаправлении "&", я так думаю. Gefolge 5 лет назад 0
да @ Ramhound Я знаю это, но я уже добавил эту строку после этой проблемы. Так что да, я не могу ввести истину, если утверждение, но я не мог выйти из цикла раньше, если условие в любом случае. Gefolge 5 лет назад 0
@Gefolge - Ваше условие выхода оценивается только один раз за итерацию цикла, если только у вас нет дополнительного условия, которое прерывает или продолжает цикл. Ramhound 5 лет назад 0
в первом сценарии не было условия if. Я добавил это, чтобы избежать бесконечного цикла. Gefolge 5 лет назад 0

0 ответов на вопрос

Похожие вопросы