#!/bin/bash # 检查到未定义的变量则停止执行并报错 set -u # 检查参数数量 if [ "$#" -ne 1 ]; then echo "Error: Incorrect number of arguments" echo "Usage: $0 ZIP_FILE_PATH" exit 1 fi ZIP_FILE_PATH=$1 SIMULATION_PATH="/home/cicv/work/pji_desktop/simulation" UNZIP_DATA_PATH="/home/cicv/work/pji_desktop/tmp_download/simulation_zip/data" # 检查zip文件是否存在 if [ -e "$ZIP_FILE_PATH" ]; then echo "The file exists: $ZIP_FILE_PATH" else echo "The file does not exist: $ZIP_FILE_PATH" exit 1 fi # 敏感目录列表 SENSITIVE_DIRS=( "/" "/bin" "/boot" "/dev" "/etc" "/home" "/lib" "/lib64" "/opt" "/proc" "/root" "/sbin" "/sys" "/tmp" "/usr" "/var" "/home/cicv" ) # 判断某目录是否为敏感目录 is_sensitive_directory() { local dir="$1" for sensitive_dir in "${SENSITIVE_DIRS[@]}"; do if [[ "$dir" == "$sensitive_dir" ]]; then return 0 # 敏感目录 fi done return 1 # 非敏感目录 } # 清除历史文件 # 检查要删除的目录是否为空 if [[ -z "$UNZIP_DATA_PATH" ]]; then echo "Error: Variable UPDATE_DATA_PATH is not set or empty" exit 1 fi # 检查要删除的目录是否为敏感目录 if is_sensitive_directory "$UNZIP_DATA_PATH"; then echo "Error: '$UNZIP_DATA_PATH' is a sensitive directory and can not be deleted!" exit 1 fi echo "Starting deleting old files: $UNZIP_DATA_PATH..." # 删除对应目录 sudo rm -rf "$UNZIP_DATA_PATH" echo "Old files deleted: $UNZIP_DATA_PATH" # 解压文件 echo "Starting decompressing zip file: $ZIP_FILE_PATH..." ## 解压zip文件 unzip -o "$ZIP_FILE_PATH" -d "$UNZIP_DATA_PATH" # -o表示覆盖现有文件 ## 解压data目录 unzip -o "$UNZIP_DATA_PATH/data.zip" -d "$UNZIP_DATA_PATH/data" # -o表示覆盖现有文件 echo "Zip file decompressed: $ZIP_FILE_PATH" # 复制文件到项目目录 ## data目录 echo "Starting copying directory: $UNZIP_DATA_PATH/data to $SIMULATION_PATH/data/pjirobot/data..." cp -r "$UNZIP_DATA_PATH/data" "$SIMULATION_PATH/data/pjirobot/data" echo "Directory copy successfully" ## origin_map.bag echo "Starting copying file: $UNZIP_DATA_PATH/origin_map.bag to $SIMULATION_PATH/data/map_bag..." cp "$UNZIP_DATA_PATH/origin_map.bag" "$SIMULATION_PATH/data/map_bag" echo "File copy successfully" ## map.world echo "Starting copying file: $UNZIP_DATA_PATH/map.world to $SIMULATION_PATH/catkin_ws/src/SimulationEnvs/worlds..." cp "$UNZIP_DATA_PATH/map.world" "$SIMULATION_PATH/catkin_ws/src/SimulationEnvs/worlds" echo "File copy successfully" ## map.pgm echo "Starting copying file: $UNZIP_DATA_PATH/map.pgm to $SIMULATION_PATH/catkin_ws/src/Navigation/map..." cp "$UNZIP_DATA_PATH/map.pgm" "$SIMULATION_PATH/catkin_ws/src/Navigation/map" echo "File copy successfully" ## map.yaml echo "Starting copying file: $UNZIP_DATA_PATH/map.yaml to $SIMULATION_PATH/catkin_ws/src/Navigation/map..." cp "$UNZIP_DATA_PATH/map.yaml" "$SIMULATION_PATH/catkin_ws/src/Navigation/map" echo "File copy successfully" echo "Data preparation done."