增量版本文本存储在 bash 脚本文件中

增量版本文本存储在 bash 脚本文件中

我有一个 bash 文件,我想在其中存储版本文本(最好是“ echo version 1.0.1”,以便它在执行时自动打印出自己的版本)

我正在尝试创建一个将更新版本的命令组。

到目前为止我已经

grep "echo version" ~/.bashrc | cut -c 14- | sed -e 's/\./\n/g'

提取“echo version 1.0.1”,剪切出“echo version ”并将版本拆分在点之间

1
0
1

并且我达到了正则表达式、bash 和 google-foo 的限制来提取最后一个数字(补丁版本),我可以增加该数字并写回文件。

主要是,我如何得到最后一个数字?

此外,如果我可以做得更好,请提出建议。

答案1

awk -F'[ .]' '/^echo version/ {print $1,$2,$3"."$4"."$5+1}' ~/.bashrc

输出:

echo version 1.0.2

-F'[ .]':字段分隔符空白和点

/^echo version/:搜索以 ( ^)开头的行echo version

print $1,$2:打印以空格分隔的字符串

$5+1:将字符串/值增加 1

答案2

perl 来救援

$ cat file
echo version 1.0.1
$ perl -i -pe 's/echo version \d+\.\d+\.\K(\d+)/ $1+1 /e' file
$ cat file
echo version 1.0.2

答案3

使用bash-semver

https://github.com/fmahnke/shell-semver

## Use bash-semver
## https://github.com/fmahnke/shell-semver
#===========

#Increment semantic versioning strings in shell scripts.
./increment_version.sh
usage: increment_version.sh [-Mmp] major.minor.patch

./increment_version.sh -p 0.0.0
#0.0.1

./increment_version.sh -m 0.0.3
#0.1.0

./increment_version.sh -M 1.1.15
#2.0.0

./increment_version.sh -Mmp 2.3.4
#3.1.1

相关内容