Запустите команду в фоновом режиме, дождитесь определенной строки журнала, затем выполните новую команду на переднем плане

Я пытаюсь запустить некоторые операторы SQL в базе данных mssql перед запуском БД (это происходит как часть шага запуска Docker). Из того, что я могу сказать, единственный способ сделать это – запустить сервер в фоновом режиме, дождаться его запуска, затем запустить файл sql и убить сервер.

Исходя из этого вопроса у меня есть следующее, которое отлично работает:

/opt/mssql/bin/sqlservr & sleep 10 && /opt/mssql-tools/bin/sqlcmd -i whatever.sql && pkill sqlservr

Проблема в том, что режим sleep 10 немного ломкий, если сервер запускается медленно, или добавляет задержку, если он быстро запускается. Есть ли способ, которым я могу заменить sleep 10 часть на что-то, что контролирует стандартный вывод команды /opt/mssql/bin/sqlservr и блокирует до /opt/mssql/bin/sqlservr с определенной строкой журнала?

Я думаю, что это решение работает на основе этого ответа супер пользователя :

( /opt/mssql/bin/sqlservr & ) | grep -q "Service Broker manager has started" && /opt/mssql-tools/bin/sqlcmd -i whatever.sql && pkill sqlservr