88 lines
2.3 KiB
Plaintext
88 lines
2.3 KiB
Plaintext
|
|
pwd
|
|
ls -a
|
|
echo "开始"
|
|
# rm -rf gradle-home
|
|
rm -rf android-sdk-1.0.1.zip
|
|
mkdir -p gradle-home
|
|
|
|
echo "0------------------------"
|
|
PACKAGE_NAME="gradle"
|
|
ZIP_FILE="${PACKAGE_NAME}-1.0.1.tar.gz"
|
|
DEST_DIR="gradle-home"
|
|
NEXUS_URL="http://25.12.10.69:8081"
|
|
ZIP_URL="${NEXUS_URL}/repository/gradle-release/org/df/gradle/1.0.1/${ZIP_FILE}"
|
|
MD5_URL="${ZIP_URL}.md5" # MD5 文件的直接链接
|
|
|
|
# 错误处理函数
|
|
handle_error() {
|
|
echo "错误:$1"
|
|
exit 1
|
|
}
|
|
|
|
# 获取远程MD5值
|
|
get_remote_md5() {
|
|
local remote_md5=$(wget -q -O - "$MD5_URL" | awk '{print $1}')
|
|
if [ -z "$remote_md5" ]; then
|
|
handle_error "无法获取远程MD5校验值"
|
|
fi
|
|
echo "$remote_md5"
|
|
}
|
|
|
|
# 获取本地MD5值
|
|
get_local_md5() {
|
|
if [ -f "$ZIP_FILE" ]; then
|
|
md5sum "$ZIP_FILE" | awk '{print $1}'
|
|
else
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
|
|
remote_md5=$(get_remote_md5)
|
|
local_md5=$(get_local_md5)
|
|
|
|
# 3. 比较MD5值
|
|
if [ "$remote_md5" = "$local_md5" ]; then
|
|
echo "MD5校验值匹配,无需下载更新"
|
|
|
|
# 检查是否需要解压(如果目标目录为空)
|
|
if [ ! -d "$DEST_DIR" ] || [ -z "$(ls -A "$DEST_DIR")" ]; then
|
|
echo "目标目录为空,开始解压..."
|
|
mkdir -p "$DEST_DIR"
|
|
tar -xzvf "$ZIP_FILE" -C "$DEST_DIR" --strip-components=1 || handle_error "解压失败"
|
|
echo "解压完成"
|
|
else
|
|
echo "目标目录非空,跳过解压"
|
|
fi
|
|
|
|
exit 0
|
|
fi
|
|
|
|
echo "MD5校验值不匹配或文件不存在,开始更新..."
|
|
|
|
# 4. 尝试删除已存在的文件和文件夹
|
|
echo "正在清理旧文件..."
|
|
rm -rf "$ZIP_FILE" "$DEST_DIR" || handle_error "清理失败"
|
|
echo "清理完成"
|
|
|
|
# 5. 下载ZIP文件
|
|
echo "开始下载 $ZIP_FILE..."
|
|
wget -q "$ZIP_URL" -O "$ZIP_FILE" || handle_error "下载失败"
|
|
echo "下载完成"
|
|
|
|
# 6. 验证下载后的MD5(使用已获取的remote_md5,无需重新获取)
|
|
new_local_md5=$(get_local_md5)
|
|
if [ "$new_local_md5" != "$remote_md5" ]; then
|
|
handle_error "下载的文件MD5校验失败: 本地=$new_local_md5, 远程=$remote_md5"
|
|
fi
|
|
echo "MD5校验成功"
|
|
|
|
# 7. 创建目标目录
|
|
mkdir -p "$DEST_DIR" || handle_error "创建目录失败"
|
|
|
|
# 8. 解压文件
|
|
echo "正在解压..."
|
|
tar -xzvf "$ZIP_FILE" -C "$DEST_DIR" --strip-components=1 || handle_error "解压失败"
|
|
echo "解压完成,文件已提取到 $DEST_DIR"
|
|
ls -a |