使用 until 循环重试 heredoc psql 查询直到成功的脚本

script to keep retrying a heredoc psql query until it succeeds with until loop

我运行一个多sql通过psql手动查询交易如下:

psql <<EOF
BEGIN;
Query1;
Query2;
COMMIT;
EOF

这里的问题是有时我的交易会失败,需要不断手动重试直到成功。当需要重复做时,这就有点乏味了。

有没有办法使用 until 实现此目的?

我目前的工作尝试是:

until psql --file transaction.sql
do
    sleep 5
done

但是,这需要一个超出此脚本范围的额外文件。

有没有办法让它按以下方式工作:

# this is currently not working for me.
until psql <<EOF
   BEGIN;
   Query1;
   Query2;
   COMMIT;
EOF
do
    sleep 5
done

您可以尝试使用函数。

#!/usr/bin/env bash

my_function(){
{
psql <<EOF
BEGIN;
Query1;
Query2;
COMMIT;
EOF
} && return 0
return 1
}

until my_function; do
  sleep 5
done