首页 > 解决方案 > 如何在 bash 中更新次要版本号?

问题描述

目前,我想使用 bash 命令更新文本文件中的次要版本。这是我正在处理的格式:MAJOR.Minor.BugFix。我能够增加 BugFix 版本号,但无法仅增加次要版本。

IE

01.01.00-> 01.02.00
01.99.00-> 02.00.00

这是我在网上找到的代码片段,并试图调整以更新次要而不是错误修复

echo 01.00.1 | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}'

标签: bashshell

解决方案


-F则表达式-F.将匹配任何字符。做一些事情-F"[.]",让它匹配句点,你可以在没有任何长度()的东西的情况下分割字段。

larsk拆分成多行的想法是一个很好的想法:

echo $a | awk -F'[.]'  '{
    major=$1;
    minor=$2;
    patch=$3;
    minor += 1;
    major += minor / 100;
    minor = minor % 100;
    printf( "%02d.%02d.%02d\n", major, minor, patch );
    }'

推荐阅读