BitBucket DIY备份脚本if/else语句执行异常退出问题排查
BitBucket DIY备份脚本执行异常:在common.sh的if语句处直接退出
我使用Atlassian的BitBucket DIY备份脚本,运行bitbucket.diy-backup.sh时,脚本在common.sh的if语句位置直接退出,未执行预期的if或else分支逻辑。
相关代码片段
bitbucket.diy-backup.sh
set -e SCRIPT_DIR=$(dirname "$0") source "${SCRIPT_DIR}/utils.sh" source "${SCRIPT_DIR}/common.sh"
common.sh
BACKUP_VARS_FILE=${BACKUP_VARS_FILE:-"${SCRIPT_DIR}"/bitbucket.diy-backup.vars.sh} ... # 在此处直接退出 if [ -f "${BACKUP_VARS_FILE}" ]; then source "${BACKUP_VARS_FILE}" debug "Using vars file: '${BACKUP_VARS_FILE}'" else error "'${BACKUP_VARS_FILE}' not found" bail "You should create it using '${SCRIPT_DIR}/bitbucket.diy-backup.vars.sh.example' as a template" fi
文件结构说明
所有相关文件均在同一目录下,实际文件结构如下:
排查与解决方法
- 检查
set -e的隐性影响:脚本开头的set -e会让任何返回非零值的命令直接终止脚本。需确认source utils.sh过程中是否有命令执行失败,或者common.sh中if语句之前的代码是否存在隐性错误。 - 修正文件名不匹配问题:脚本默认查找的变量文件是
bitbucket.diy-backup.vars.sh,但实际存在的是bitbucket.vars,文件名完全不符。可选择:- 将
bitbucket.vars重命名为bitbucket.diy-backup.vars.sh - 运行脚本时指定环境变量:
BACKUP_VARS_FILE=./bitbucket.vars ./bitbucket.diy-backup.sh
- 将
- 添加调试输出定位问题:在
common.sh的if语句前添加一行echo "当前查找的变量文件路径:${BACKUP_VARS_FILE}",运行脚本确认实际查找路径是否正确。 - 临时关闭
set -e查看完整错误:在source "${SCRIPT_DIR}/common.sh"前添加set +e,运行脚本查看完整错误信息,排查后再恢复set -e。
内容的提问来源于stack exchange,提问作者Teh__docco
相关产品推荐
相关产品推荐

