#!/bin/bash echo "==========================================" echo " 文件格式快速修复工具" echo "==========================================" echo "" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # 要检查的文件列表 SCRIPT_FILES=( "entrypoint.sh" "setup.sh" "register.sh" "manage.sh" ) FIXED_COUNT=0 TOTAL_FILES=0 echo "🔍 检查并修复以下文件:" printf '%s\n' "${SCRIPT_FILES[@]}" | sed 's/^/ - /' echo "" echo "----------------------------------------" echo "" for file in "${SCRIPT_FILES[@]}"; do TOTAL_FILES=$((TOTAL_FILES + 1)) # 检查文件是否存在 if [ ! -f "$file" ]; then echo -e "${RED}✗ $file - 文件不存在,跳过${NC}" continue fi NEEDS_FIX=false # 检查换行符 HAS_CRLF=false if file "$file" | grep -qi "CRLF\|with CR"; then HAS_CRLF=true NEEDS_FIX=true fi # 检查权限 NEEDS_CHMOD=false if [ ! -x "$file" ]; then NEEDS_CHMOD=true NEEDS_FIX=true fi # 显示状态 echo -n "📄 $file ... " if [ "$NEEDS_FIX" = false ]; then echo -e "${GREEN}OK${NC}" continue fi # 修复换行符 if [ "$HAS_CRLF" = true ]; then sed -i 's/\r$//' "$file" 2>/dev/null || sed -i '' 's/\r$//' "$file" 2>/dev/null echo -n -e "${YELLOW}[换行符已修复]${NC} " fi # 修复权限 if [ "$NEEDS_CHMOD" = true ]; then chmod +x "$file" echo -n -e "${YELLOW}[权限已修复]${NC} " fi echo -e "${GREEN}✓${NC}" FIXED_COUNT=$((FIXED_COUNT + 1)) done echo "" echo "==========================================" echo "修复完成" echo "==========================================" echo "检查文件: $TOTAL_FILES" echo "修复文件: $FIXED_COUNT" echo "" if [ $FIXED_COUNT -gt 0 ]; then echo -e "${GREEN}✓ 所有问题已自动修复!${NC}" echo "" echo "建议执行以下命令重启容器:" echo " docker-compose down" echo " docker-compose build --no-cache" echo " docker-compose up -d" echo "" # 询问是否立即重启 read -p "是否立即重启容器? (y/N): " -n 1 -r echo "" if [[ $REPLY =~ ^[Yy]$ ]]; then echo "正在重启容器..." docker-compose down docker-compose build --no-cache docker-compose up -d sleep 3 echo "" echo "容器状态:" docker-compose ps echo "" echo "查看日志:" docker logs gitea-runner --tail=30 fi else echo -e "${GREEN}✓ 所有文件格式正确,无需修复!${NC}" fi