run_map_update.sh 1.2 KB

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