#!/bin/bash
配置文件路径(与企业微信配置分离)
CONFIG_FILE="(dirname "0")/git_pull_config.env"
加载配置文件
if [ -f "$CONFIG_FILE" ]; then
source "$CONFIG_FILE"
else
WX_ROBOT_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx" # 默认不发送通知
fi
获取脚本所在目录的绝对路径
repos_path="(cd "(dirname "$0")" && pwd)"
初始化统计变量(避免子 Shell 作用域问题)
declare -i total_repos=0 success_count=0 error_count=0
declare -a error_messages=()
关键修复:使用进程替换避免子 Shell 变量丢失
while IFS= read -r gitdir; do
((total_repos++))
project_dir=(dirname "gitdir")
echo -e "\n[ START ] 同步仓库: $project_dir"
执行 git pull 并捕获输出
exec_output=(cd "project_dir" && git pull 2>&1)
exec_status=$?
记录执行结果
if [ $exec_status -eq 0 ]; then
((success_count++))
else
((error_count++))
error_messages+=("【失败】project_dir\\n\{exec_output}</pre>")
fi
done < <(find "$repos_path" -type d -name .git) # 使用进程替换
构建企业微信通知内容
build_notification() {
local status_icon="✅"
$error_count -gt 0 \] \&\& status_icon="⚠️"
cat \<\