You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Web应用部署Bash脚本在git pull失败时终止并检查结果?

在Bash脚本中检查git pull执行结果并终止运行

嘿,要让你的部署脚本在git pull失败时立刻终止运行,其实在Bash里有几种简单且可靠的实现方式。核心思路是利用命令的退出状态码——在Unix/Linux系统中,每个命令执行完成后都会返回一个数字:0代表成功,非0值则代表执行失败。我们可以基于这个特性来做判断。

方法1:用set -e让脚本自动在命令失败时退出

这是最省心的方式,在脚本开头加上set -e,之后只要任何命令返回非0状态,脚本就会直接终止运行。

示例:

#!/bin/bash
# 开启命令失败自动退出模式
set -e

# 执行git fetch
git fetch

# 执行git pull——如果失败,脚本会自动终止
git pull

# 后续步骤:编译文件
cd /path/to/candidate-folder
# 假设你的编译命令是npm run build(可替换为实际编译命令)
npm run build

# 同步到生产文件夹
rsync -avz /path/to/candidate-folder/dist/ /path/to/production-folder/

注意事项:set -e会对所有命令生效,如果你有某些命令允许失败(比如某些非关键的检查),可以在这些命令后面加上|| true来忽略失败状态。

方法2:手动检查git pull的退出状态

如果你不想让整个脚本都启用set -e,可以单独对git pull的结果做判断,有两种常用写法:

写法A:用$?变量检查退出码

$?会保存上一条命令的退出状态码,我们可以用它来判断git pull是否成功:

#!/bin/bash

git fetch

# 执行git pull
git pull
# 检查退出状态码,如果非0则终止脚本
if [ $? -ne 0 ]; then
    echo "Error: git pull执行失败,终止部署"
    exit 1
fi

# 后续编译、同步步骤...
cd /path/to/candidate-folder
npm run build
rsync -avz /path/to/candidate-folder/dist/ /path/to/production-folder/

写法B:用||短路表达式(更简洁)

Bash里的||表示“前面的命令失败时,执行后面的命令”,这种写法更紧凑,也是Shell脚本中常用的方式:

#!/bin/bash

git fetch

# 执行git pull,失败则打印错误信息并退出
git pull || { echo "Error: git pull执行失败,终止部署"; exit 1; }

# 后续步骤...
cd /path/to/candidate-folder
npm run build
rsync -avz /path/to/candidate-folder/dist/ /path/to/production-folder/

额外建议:给关键步骤加日志

为了方便后续排查问题,你可以给每个步骤加上日志输出,这样如果脚本终止,能立刻定位到故障环节:

#!/bin/bash
set -e

echo "=== 开始执行部署脚本 ==="
echo "1. 执行git fetch..."
git fetch
echo "git fetch执行成功"

echo "2. 执行git pull..."
git pull
echo "git pull执行成功"

echo "3. 编译候选发布文件夹..."
cd /path/to/candidate-folder
npm run build
echo "编译完成"

echo "4. 同步文件到生产文件夹..."
rsync -avz /path/to/candidate-folder/dist/ /path/to/production-folder/
echo "同步完成,部署成功"

内容的提问来源于stack exchange,提问作者warch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:58:15