我从未使用过 shell (bash),但在脚本中发现了一些错误,我用它来增加版本。脚本工作正常,直到这种情况
version=1.27.9
echo $version | 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}'
1.28.0 <-- result, but I need 1.27.10
在这种情况下new_version
将等于1.28.0
。如何更改此脚本以避免增加 MINOR 数字?对于这种情况我期待1.27.10
我没有 shell 经验,所以不知道从哪里开始。我在这里找到了这个脚本并使用它。请帮助我解决我的问题。先感谢您。
EDIT:要仅更改次要版本,请尝试以下操作。
echo "$version" | awk 'BEGIN{FS=OFS="."} {$3+=1} 1'
解释:对上面的代码添加解释。
echo "$version" | ##using echo to print variable version value here and passing it to awk program.
awk ' ##Starting awk program from here.
BEGIN{ ##Starting BEGIN section of this awk program here.
FS=OFS="." ##Setting FS and OFS as dot(.) here for all lines of Input_file.
}
{
$3+=1 ##For every line of Input_file adding 1 to 3rd field and saving output to $3 itself.
}
1 ##Mentioning 1 will print edited/non-edited lines here.
'
您能否尝试按照最后(次要)版本更改中间版本,OP确认不需要但我第一眼看到这个要求就明白了。
echo "$version" | awk 'BEGIN{FS=OFS="."} {$3+=1;if($3>9){$2+=1;$3=0}} 1'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)