使用 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
我运行一个多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