whileループでデータベースを照会する

whileループでデータベースを照会する

クエリを実行して終了コードを確認して、データベースが初期化されていることを確認します。終了コードが0の場合、データベースクエリは承認され、データベースを初期化する必要があることを意味します。

pg_isreadyPostgresのバージョンが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

おすすめ記事