确保即使子脚本退出,父bash脚本也不会退出
我有两个shell脚本,一个是parentscript,另一个是child脚本 父脚本的代码确保即使子脚本退出,父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
#!/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
,直到您了解它的功能及其原因。