在 while 循环中查询数据库

在 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 ")

答案1

您应该能够直接使用返回值。

while ! cmd
do
    ...
done

相关内容