Сравнение строк версий в Zsh
Я использую этот скрипт:
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