我试图通过执行查询并检查退出代码来确定数据库是否已初始化。如果退出代码为 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