Запрос базы данных в цикле while

Я пытаюсь определить, была ли база данных инициализирована путем выполнения запроса и проверки кода выхода. Если код выхода равен 0, я знаю, что запрос базы данных был принят и база данных должна быть инициализирована.

Я не могу использовать pg_isready потому что версия postgres до 9.3, поэтому я разработал следующий код:

 while (( $(su -l postgres -c "psql -d db_name -c 'select count(1) from table_name' > /dev/null 2>&1") != 0 )) do echo "waiting for database to initialise" sleep 10 done 

Запуск $(su -l postgres -c "psql -d db_name -c 'select count(1) from table_name' > /dev/null 2>&1" по себе возвращает код выхода 0, но я получаю сообщение об ошибке когда он используется в цикле:

 ((: != 0 : syntax error: operand expected (error token is "!= 0 ") 

One Solution collect form web for “Запрос базы данных в цикле while”

Вы должны иметь возможность использовать возвращаемое значение напрямую.

 while ! cmd do ... done 
  • Помогите мне понять, почему тест $? -eq 0 истинно, даже если я ожидаю, что оно будет ложным
  • Как создать окно GUI, которое показывает выполнение команд Linux?
  • Как передать параметр с пространством в nohup?
  • Как выполнить команду внутри сценария оболочки без открытия новой оболочки
  • Выполнить список команд с контрольной точкой?
  • Почему printf выводит больше аргументов, чем ожидалось?
  • Разбор строки в строковой литературе в оболочке
  • case multi-pattern со строками
  • один лайнер для использования памяти
  • Эффективный способ запуска нескольких сценариев оболочки из одного сценария оболочки
  • Труба в сценарии оболочки
  • Linux и Unix - лучшая ОС в мире.