Consultando o banco de dados dentro de um loop while

0

Estou tentando determinar se um banco de dados foi inicializado executando uma consulta e examinando o código de saída. Se o código de saída for 0, então sei que a consulta do banco de dados foi aceita e o banco de dados deve ser inicializado.

Não consigo usar pg_isready porque a versão postgres é anterior a 9.3, por isso desenvolvi o seguinte código:

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

A execução de $(su -l postgres -c "psql -d db_name -c 'select count(1) from table_name' > /dev/null 2>&1" nos seus próprios retorna um código de saída de 0, no entanto, estou recebendo uma mensagem de erro quando é usado dentro do loop:

((: != 0 : syntax error: operand expected (error token is "!= 0 ")
    
por algorhythm 23.12.2016 / 12:58

1 resposta

3

Você deve poder usar o valor de retorno diretamente.

while ! cmd
do
    ...
done
    
por 23.12.2016 / 13:47