我有两个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退出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句