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

确保即使子脚本退出,父bash脚本也不会退出,bash,Bash,我有两个shell脚本,一个是parentscript,另一个是child脚本 父脚本的代码 #!/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

我有两个shell脚本,一个是parentscript,另一个是child脚本

父脚本的代码

#!/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
子脚本的代码

#!/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“我仍然可以这样做”
语句。但是在我的例子中,如果子脚本退出,那么父脚本也会退出


如何防止这种情况发生?

从父脚本中删除
set-euo pipefail

从父脚本中删除
set-euo pipefail

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


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

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


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

停止使用
set-e
,直到您了解它的功能及其原因。停止使用
set-e
,直到您了解它的功能及其原因。