gpt4 book ai didi

bash - 查找远程和本地版本号,比较它们,如果更大则下载

转载 作者:行者123 更新时间:2023-12-05 01:52:38 24 4
gpt4 key购买 nike

我有一个可行的解决方案,但它不适合公众使用。文件“version.txt”既是远程的也是本地的。区别在于数量:

远程:

17 March 2022
FVWM myExtensions ver. 3.1.4

本地:

15 March 2022
FVWM myExtensions ver. 3.1.1

在我的“糟糕”解决方案中,我手动将这些行更改为一行,以便 awk 找到最后一列并使用 sed 删除数字之间的点。两个结果都作为变量。

awk '{print $NF}' download/version.txt > tmpGit.txt
VARgit=`sed 's|[.]||g' tmpGit.txt`
awk '{print $NF}' ~/.fvwm/version.txt > tmpLocal.txt
VARlocal=`sed 's|[.]||g' tmpLocal.txt`

if [ "$VARgit" -gt "$VARlocal" ]; then
echo "New update available.";
else
echo "No update.";
fi

我还没有找到在文本行中查找数字并比较多个点号的解决方案。提前谢谢你。

最佳答案

您可以使用 grep 来完成此操作,例如:

IFS=. read rmajor rminor rpatch < <(grep -oE '[0-9]+\.[0-9]+\.[0-9]+' remote.txt)
IFS=. read lmajor lminor lpatch < <(grep -oE '[0-9]+\.[0-9]+\.[0-9]+' local.txt)

[ $rmajor -gt $lmajor ] && echo "New major version"
[ $rminor -gt $lminor ] && echo "New minor version"
[ $rpatch -gt $lpatch ] && echo "New patchlevel"

编辑

因此,为了测试 remote.txt 是否包含更新的版本,假设所有版本项都是数字,这样的事情可行:

if [ $rmajor -gt $lmajor ]; then
echo "New major version"
elif [ $rmajor -eq $lmajor -a $rminor -gt $lminor ]; then
echo "New minor version"
elif [ $rmajor -eq $lmajor -a $rminor -eq $lminor -a $rpatch -gt $lpatch ]; then
echo "New patchlevel"
else
echo "Remote has same version or older."
fi

关于bash - 查找远程和本地版本号,比较它们,如果更大则下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71525108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com