Запрос базы данных в цикле 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 
  • Печатать значения строк из текста с разделителями в Unix
  • проверьте, соответствует ли строка допустимому пути в BASH
  • Может кто-нибудь объяснить, что «$ {files }»
  • сравнение двух файлов по строкам
  • почему ключевое слово export не работает во втором сценарии?
  • Как написать скрипт, который смотрит каталог для команды lessc?
  • Выведите что-нибудь (в цикле) до нажатия клавиши
  • Хотите напечатать позиционный аргумент с заменой переменных
  • файл сценария оболочки сценария
  • сценарий bash, который печатает использование процессора, дисковое пространство, использование ram
  • Как создать папку с именем пользователя и датой в качестве имени папки?
  • Linux и Unix - лучшая ОС в мире.