Запрос базы данных в цикле 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 
  • Как мне grep найти файл, соответствующий строке, заключенной в подстановочные знаки
  • Инкремент оглядывается назад в файле конфигурации ежедневно +1
  • Необходимо получить последний файл с меткой даты за каждый месяц
  • файл сценария оболочки сценария
  • как использовать строки в файле в качестве переменной
  • Получение количества строк и сохранение в результирующем наборе
  • Неправильный способ перечисления версий python из bash
  • сценарий оболочки выполняется дважды
  • Присвоение вывода команды переменной означает странные результаты
  • Bash: синтаксическая ошибка около неожиданного токена 'done'
  • Как выполнить команду внутри сценария оболочки без открытия новой оболочки
  • Interesting Posts

    Linux и Windows совместимый домашний привод

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

    Как захватить самое старое непрочитанное сообщение из `mail` в скрипте?

    Как перекомпилировать и запустить предварительно собранный драйвер ядра Linux как пользовательский модуль?

    «ALL ALL = (ALL) NOPASSWD: ALL» было автоматически добавлено в мой файл / etc / sudoers. Это нарушение безопасности?

    Что означает опция «Входящие» в ufw?

    команды сортировки и uniq не работают, как ожидалось, когда выполняются cron

    Force IPv6 только через Miredo

    autossh не будет работать в фоновом режиме

    shell howto: сохранить несколько файлов двоичных данных (jpg) в один файл с некоторыми дополнительными данными и снова отделить

    Список портов, на которых прослушивается процесс PID (желательно с использованием инструментов iproute2)?

    Как добавить запись CAA на Debian

    Почему dmesg называется dmesg?

    Почему я не могу переключить виртуальный терминал сейчас?

    Сравните два файла для соответствия строк и сохраните положительные результаты

    Linux и Unix - лучшая ОС в мире.