首页 > 解决方案 > 通知包版本更改的脚本

问题描述

我在该项目内的特定路径 /file/proj/ 中有构建列表,构建目录列表将像

3.7.0.0.121/         
4.2.0.0.200-GA/ 
4.2.0.0.200/
4.2.1.0.54-GA/   
4.2.1.0.54/  
4.3.0.0.5-GA/
4.3.0.0.5/  
4.4.0.164.403/   
4.4.0.165.404/

这里 4.2.1.0.54-GA/ 是我最新的稳定版本, 4.4.0.165.404/ 是最新的频繁发布版本。

在 4.2.1.0.54-GA/ build 我有类似的文件

  1. proj_4.3.0_App_Update.zip
  2. proj_4.3.0_App_Update_UI.zip
  3. dfd.txt

在 4.4.0.165.404/ build 我有类似的文件

  1. proj_4.4.0_App_Update.zip
  2. proj_4.4.0_App_Update_UI.zip
  3. dfd.txt

在这里,我需要将特定文件 proj_4.3.0_App_Update.zip 复制并解压缩到文件夹中的稳定版本和频繁发布版本中和频繁的发布版本我有包的列表,比如

apac_4.3.rpm
buil_3.4.rpm
ssnjx_3.3.rpm 

所以我需要比较稳定和频繁发布的 rpm 文件版本,并列出与稳定版本相比更新了哪些新版本

标签: pythonlinuxshell

解决方案


你的问题很广泛;目前尚不清楚您是在问以下每个问题,还是只问一些问题:

  1. 如何“自动”下载最新版本的 zip 文件。
  2. 如何从这两个文件中仅提取要比较的文件。
  3. 如何比较两个不同文件夹中的特定子目录。
  4. 如何显示差异。

以下脚本尝试回答每个问题,并解释每个步骤;希望它有所帮助:

    #!/usr/bin/env bash

    # exit script immediately on error
    set -e 

    # Example zip files, adjust for your use case
    BASE_URL=https://github.com/johnweldon/tiny-profile/archive
    LATEST=0.1.9
    STABLE=0.1.8

    # Create temporary directory to extract into
    TEMPDIR=$(mktemp -d)
    echo "created ${TEMPDIR}"

    # Clean up temporary directory when done.  Comment the next line if you
    # want to keep the directory
    trap "rm -rf $TEMPDIR && echo \"deleted ${TEMPDIR}\"" EXIT


    # Download and extract only files needed from LATEST into $TEMPDIR/latest
    ( cd $TEMPDIR;
      curl -L -o latest.zip "$BASE_URL/v$LATEST.zip" && \
      unzip latest.zip */bin/* */.vim/ftplugin/* -d latest) >/dev/null 2>&1
    # Download and extract only files needed from STABLE  into $TEMPDIR/stable
    ( cd $TEMPDIR; 
      curl -L -o stable.zip "$BASE_URL/v$STABLE.zip" && \
      unzip stable.zip */bin/* */.vim/ftplugin/* -d stable) >/dev/null 2>&1

    echo -e "\nBEGIN DIFFERENCES:\n------------------\n\n"
    (cd $TEMPDIR;
      diff -r stable/tiny-profile-$STABLE/ latest/tiny-profile-$LATEST/ || true)
    echo -e "\n\n---------------\nEND DIFFERENCES\n"

推荐阅读