bash,while循环,源文件在1种情况下返回错误;如何捕获变量?

bash,while循环,源文件在1种情况下返回错误;如何捕获变量?

我有这部分代码。

while IFS=' ' read -ra var
do

    source SCRIPT 2>&1 | tee -a $log

done <<< $main_config 

脚本

ssh -i id_rsa "${var[5]}"@"${var[1]}" -n 'sudo su - postgres -c "pg_dump -Fc '${var[10]}' > /tmp/'${var[12]}'"'

这部分共计 10 行(来自$main_config变量),其中 1 种情况出现错误消息,DB 不存在。

pg_dump: chyba spojení s databází "eetB" selhalo: FATAL:  database "eetB" does not exist

如果循环结束时出现 1 条错误消息,我该如何获取信息/错误代码?例如存储到某个变量。如果错误消息来自另一台服务器,在这种情况下是否可行?

我尝试过if,,return但没有成功。

简单来说,如果出现source一些错误,如何获取错误代码?

谢谢。

更新

SCRIPT 有问题。ssh命令成功,所以返回0。我必须更改 SCRIPT,直接在本地主机上转储。

ssh -i id_rsa "${var[5]}"@"${var[1]}" -n 'sudo su - postgres -c "pg_dump -Fc '${var[10]}'"' > ${var[11]}/${var[12]}

但是现在,我遇到了问题。如果我有命令,它会在出现 的情况下tee返回。没有它就没问题。truefalsetee

while IFS=' ' read -ra var
do
    if
        source scripts/$script_name 2>&1 | tee -a $log
    then
        status="true"
    else
        status="false"
    fi
done <<< $main_config 

你能告诉我问题出在哪里吗?

相关内容