#!/bin/bash # 检查到未定义的变量则停止执行并报错 set -u # 检查参数数量 if [ "$#" -ne 2 ]; then echo "Error: Incorrect number of arguments" echo "Usage: $0 CONTAINER_NAME DOWNLOAD_FILE_PATH" exit 1 fi CONTAINER_NAME=$1 DOWNLOAD_FILE_PATH=$2 UPDATE_DATA_PATH="/home/cicv/work/pji_desktop/map_update/data" CONTAINER_WORKSPACE="/home/cartographer_detailed_comments_ws-master" # 清除历史文件 ## 检查要删除的目录是否为空 if [[ -z "$UPDATE_DATA_PATH" ]]; then echo "Error: Variable UPDATE_DATA_PATH is not set or empty" exit 1 fi ## 删除对应目录 safe-rm -rf "$UPDATE_DATA_PATH" # 解压地图更新对应的压缩包 unzip "$DOWNLOAD_FILE_PATH" -d "$UPDATE_DATA_PATH" # 检查容器启动状态 if [ "$(docker inspect -f '{{.State.Running}}' $CONTAINER_NAME)" = "true" ]; then echo "Container $CONTAINER_NAME is already running." else echo "Starting container $CONTAINER_NAME..." docker start "$CONTAINER_NAME" fi command="source $CONTAINER_WORKSPACE/devel_isolated/setup.sh && $CONTAINER_WORKSPACE/build_map.sh $CONTAINER_WORKSPACE/config.json" # 容器内执行地图更新脚本 docker exec "$CONTAINER_NAME" /bin/bash -c "$command"