пока у меня есть это:
for each in {01..10} ; do ./sb0$each/tomcat_sb0$each start;done
это сразу запустит мои приложения, но я хочу, чтобы оно подождало, пока оно не прочитает одну строку в файле, какой самый простой способ сделать это?
пока у меня есть это:
for each in {01..10} ; do ./sb0$each/tomcat_sb0$each start;done
это сразу запустит мои приложения, но я хочу, чтобы оно подождало, пока оно не прочитает одну строку в файле, какой самый простой способ сделать это?
while ! grep "the line you're searching for" /path/to/the.file
do sleep 10; done
for each in {01..10} ; do ./sb0$each/tomcat_sb0$each start;done
Это решение имеет while
цикла , которое будет продолжаться до тех пор , как линии , которую вы хотите найти не найден в файле. Цикл содержит всего 10 секунд sleep
, так что каждые десять секунд он проверяет нужную вам строку. Очевидно, вы можете установить это на что угодно.
grep
ищет шаблон в заданном файле и возвращает false, если ничто не соответствует шаблону. !
означает, что нет, и как не false = true, цикл продолжается до тех пор, пока команда grep
возвращает false.
Например, если вы ищете строку, запустите приложения, теперь добавьте в файл /var/tmp/foo.txt :
while ! grep "start the apps now chuck" /var/tmp/foo.txt;
Если строка существует, ответ не будет иметь нулевую длину, поэтому условное выражение вернет false и цикл завершится.