gpt4 book ai didi

conditional - 比较 Zsh 中的版本字符串

转载 作者:行者123 更新时间:2023-12-03 21:29:01 28 4
gpt4 key购买 nike

我正在使用这个脚本:

if [[ -f /usr/bin/atom ]]; then
ATOM_INSTALLED_VERSION=$(rpm -qi atom | grep "Version" | cut -d ':' -f 2 | cut -d ' ' -f 2)
else
ATOM_INSTALLED_VERSION=""
fi
ATOM_LATEST_VERSION=$(wget -q "https://api.github.com/repos/atom/atom/releases/latest" -O - | grep -E "https.*atom-amd64.tar.gz" | cut -d '"' -f 4 | cut -d '/' -f 8 | sed 's/v//g')

if [[ "$ATOM_INSTALLED_VERSION" -lt "$ATOM_LATEST_VERSION" ]]; then
sudo dnf install -y https://github.com/atom/atom/releases/download/v${ATOM_LATEST_VERSION}/atom.x86_64.rpm
fi

检查 Atom 升级并安装它们(如果可用)。问题是测试:
[[ "$ATOM_INSTALLED_VERSION" -lt "$ATOM_LATEST_VERSION" ]]

返回:
zsh: bad floating point constant

其中(显示输入和输出):
$ printf $ATOM_INSTALLED_VERSION
1.8.0%
$ printf $ATOM_LATEST_VERSION
1.12.7%

我如何编写一个有效的测试?我试过使用 (( $ATOM_INSTALLED_VERSION < $ATOM_LATEST_VERSION ))但这也失败了:
zsh: bad floating point constant

最佳答案

zsh 配备了用于版本字符串比较的函数,请参阅 zshcontrib(1)。

installed=$(rpm -q --qf '%{VERSION}' atom)
latest=$(wget -q ...)
autoload is-at-least
is-at-least $latest ${installed:-0} || sudo dnf install -y ...

关于conditional - 比较 Zsh 中的版本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41274926/

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