代码之家  ›  专栏  ›  技术社区  ›  Rishab Prasad

使用bash创建具有增量版本的新目录

  •  0
  • Rishab Prasad  · 技术社区  · 6 年前

    1. Dockerfile
    2. Makefile
    3. manifests
        + 1.0.0
        + 1.0.1   
    

    我想从变量中的现有目录中获取最新版本。 ,添加值 0.0.1款 到 以获得下一个版本,即 下一个=1.0.2 . 这样我就可以用 mkdir清单/$next

    1. Dockerfile
    2. Makefile
    3. manifests
        + 1.0.0
        + 1.0.1
        + 1.0.2   
    

    我可以使用下面的命令获取最新版本的目录名命令:-

    last=$(find manifests -type d -name '[0-9]*.[0-9]*.[0-9]*' -printf "%f\n" | sort -V | tail -n 1)
    

    如何添加 对于变量,所以 有点像这个:-

    next=$(($last + 0.0.1))
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Cyrus    6 年前

    每增加一个函数:

    #!/bin/bash
    
    next() {
      local l="$1"
      local a="$2"
      local l1 l2 l3 a1 a2 a3
    
      IFS="." read l1 l2 l3 <<< "$l"
      IFS="." read a1 a2 a3 <<< "$a"
      
      echo "$(($l1+a1)).$(($l2+a2)).$(($l3+a3))"
    }
    
    last="1.0.1"
    add="0.0.1"
    
    new=$(next "$last" "$add")
    echo "$new"
    

    输出:

    1.0.2
    
        2
  •  1
  •   Doj    6 年前

    awk

    next=`echo "$last" | awk -F. '{print $1"."$2"."($3+1)}'`
    
        3
  •  1
  •   M. Nejat Aydin    6 年前

    平淡的 bash

    #!/bin/bash
    
    cd manifests || exit
    last=$(printf "%s\n" [0-9]*.*.*[0-9]/ | sort -Vr | head -n 1)
    last=${last%?} # Remove the last character, that is, the '/'
    [[ -d $last ]] && mkdir "${last%.*}.$(( ${last##*.} + 1))"
    

    manifests .