115 lines
3.2 KiB
Bash
Executable File
115 lines
3.2 KiB
Bash
Executable File
#!/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}"
|