#!/bin/bash # 自动执行所有场景的所有case # 总共5个场景,每个场景4个case,共20个case # 设置环境变量(离线模式) export HF_HUB_OFFLINE=1 export TRANSFORMERS_OFFLINE=1 # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 定义所有场景 SCENARIOS=( "unitree_g1_pack_camera" "unitree_z1_dual_arm_cleanup_pencils" "unitree_z1_dual_arm_stackbox" "unitree_z1_dual_arm_stackbox_v2" "unitree_z1_stackbox" ) # 定义case数量 CASES=(1 2 3 4) # 记录开始时间 START_TIME=$(date +%s) LOG_FILE="run_all_cases_$(date +%Y%m%d_%H%M%S).log" echo -e "${BLUE}========================================${NC}" echo -e "${BLUE}开始执行所有场景的case${NC}" echo -e "${BLUE}总共: ${#SCENARIOS[@]} 个场景 x ${#CASES[@]} 个case = $((${#SCENARIOS[@]} * ${#CASES[@]})) 个任务${NC}" echo -e "${BLUE}日志文件: ${LOG_FILE}${NC}" echo -e "${BLUE}========================================${NC}" echo "" # 初始化计数器 TOTAL_CASES=$((${#SCENARIOS[@]} * ${#CASES[@]})) CURRENT_CASE=0 SUCCESS_COUNT=0 FAIL_COUNT=0 # 记录失败的case declare -a FAILED_CASES # 遍历所有场景 for scenario in "${SCENARIOS[@]}"; do echo -e "${YELLOW}>>> 场景: ${scenario}${NC}" # 遍历所有case for case_num in "${CASES[@]}"; do CURRENT_CASE=$((CURRENT_CASE + 1)) case_dir="${scenario}/case${case_num}" script_path="${case_dir}/run_world_model_interaction.sh" echo -e "${BLUE}[${CURRENT_CASE}/${TOTAL_CASES}] 执行: ${case_dir}${NC}" # 检查脚本是否存在 if [ ! -f "${script_path}" ]; then echo -e "${RED}错误: 脚本不存在 ${script_path}${NC}" FAIL_COUNT=$((FAIL_COUNT + 1)) FAILED_CASES+=("${case_dir} (脚本不存在)") continue fi # 执行脚本 echo "开始时间: $(date '+%Y-%m-%d %H:%M:%S')" if bash "${script_path}" >> "${LOG_FILE}" 2>&1; then echo -e "${GREEN}✓ 成功: ${case_dir}${NC}" SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) else echo -e "${RED}✗ 失败: ${case_dir}${NC}" FAIL_COUNT=$((FAIL_COUNT + 1)) FAILED_CASES+=("${case_dir}") fi echo "结束时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "" done echo "" done # 计算总耗时 END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) HOURS=$((DURATION / 3600)) MINUTES=$(((DURATION % 3600) / 60)) SECONDS=$((DURATION % 60)) # 输出总结 echo -e "${BLUE}========================================${NC}" echo -e "${BLUE}执行完成!${NC}" echo -e "${BLUE}========================================${NC}" echo -e "总任务数: ${TOTAL_CASES}" echo -e "${GREEN}成功: ${SUCCESS_COUNT}${NC}" echo -e "${RED}失败: ${FAIL_COUNT}${NC}" echo -e "总耗时: ${HOURS}小时 ${MINUTES}分钟 ${SECONDS}秒" echo -e "详细日志: ${LOG_FILE}" echo "" # 如果有失败的case,列出来 if [ ${FAIL_COUNT} -gt 0 ]; then echo -e "${RED}失败的case列表:${NC}" for failed_case in "${FAILED_CASES[@]}"; do echo -e "${RED} - ${failed_case}${NC}" done echo "" fi echo -e "${BLUE}========================================${NC}"