确保即使子脚本退出,父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"语句始终得到执行。但是,在我的情况下,如果退出子脚本,那么父脚本也将退出。

我该如何预防?

JoaoCostaIFG

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确保python脚本即使错误退出也始终运行的方法

来自分类Dev

Bash脚本不会循环退出

来自分类Dev

是否可以忽略PHP中父脚本退出子脚本?

来自分类Dev

从使用$()的bash脚本退出

来自分类Dev

Bash脚本(使用Java命令)不会退出(脚本2)

来自分类Dev

子脚本之一失败时不退出bash脚本

来自分类Dev

Bash脚本不会在输入命令中退出

来自分类Dev

Bash脚本不会在ctrl d上退出

来自分类Dev

执行bash脚本循环而不会错误退出

来自分类Dev

当子级退出且退出代码为非零时,父级脚本继续运行

来自分类Dev

Bash脚本退出清理

来自分类Dev

bash脚本中的退出状态

来自分类Dev

Bash在脚本中退出sudo

来自分类Dev

无法正确退出bash脚本

来自分类Dev

从脚本退出

来自分类Dev

在PHP中,即使浏览器退出后,如何确保脚本将继续运行直到完成?

来自分类Dev

在脚本中退出bash命令而不退出脚本

来自分类Dev

在脚本中退出bash命令而不退出脚本

来自分类Dev

当子进程之一退出时,退出bash脚本

来自分类Dev

括号内的`exit`不会退出脚本

来自分类Dev

即使 shell 脚本返回非零值,声明性 Jenkinsfile 也不会退出

来自分类Dev

在bash脚本中退出案例后SSH退出

来自分类Dev

无法捕获 ctrl-c 以退出函数退出 bash 脚本

来自分类Dev

从bash脚本退出,但保持进程运行

来自分类Dev

Bash退出代码状态脚本错误

来自分类Dev

从bash调用R脚本时退出代码

来自分类Dev

从子shell退出整个bash脚本

来自分类Dev

采购Bash脚本-返回错误,而不是退出?

来自分类Dev

运行bash脚本后退出终端