确保即使子脚本退出,父bash脚本也不会退出

我有两个 shell 脚本,一个是父脚本,另一个是子脚本。

父脚本的代码

#!/bin/bash
set -euo pipefail

bash /home/ubuntu/test/deploy.sh

echo "I can still do this"

子脚本代码

python -c 
"""
from db_wrapper import db
import sys

query_string = 
'select * from pipeline_release_status 
where release_deployed_at is null' 

release_status = db.run_query(db.get_environment(), query_string)

if not release_status:
    sys.exit(1)
"""

if [ $? -eq 1 ]
then
    echo "No release to deploy"
    exit 1
fi

不管子脚本是否退出,我都不希望父脚本退出,所以我总是希望echo "i can still do this"语句总是被执行。但是在我的情况下,如果子脚本退出,那么父脚本也会退出。

我该如何防止?

回答

在父脚本的第一行,您有set -euo pipefail. 该-e选项使脚本在运行的任何命令失败时退出(退出状态不同于 0)。

您可以删除该-e选项,留下set -uo pipefail,或确保子脚本始终以 0 退出。


以上是确保即使子脚本退出,父bash脚本也不会退出的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>