Path: blob/master/pkg/cidata/cidata.TEMPLATE.d/util/compare_version.sh
2649 views
#!/bin/bash12# SPDX-FileCopyrightText: Copyright The Lima Authors3# SPDX-License-Identifier: Apache-2.045set -eu67: "${SELFTEST:=}"8if [ -n "$SELFTEST" ]; then9unset SELFTEST10echo >&2 "=== Running positive tests ==="11(12set -x13"$0" 0.1.2 -eq 0.1.214"$0" 0.1.2 -ne 0.1.315"$0" 0.1.2 -ge 0.1.116"$0" 0.1.2 -ge 0.1.217"$0" 0.1.10 -ge 0.1.918"$0" 0.1.2 -gt 0.1.119"$0" 0.1.10 -gt 0.1.920"$0" 0.1.2 -le 0.1.221"$0" 0.1.2 -le 0.1.322"$0" 0.1.2 -le 0.1.1023"$0" 0.1.2 -lt 0.1.324"$0" 0.1.2 -lt 0.1.1025)26echo >&2 "=== Running negative tests ==="27(28set -x29"$0" 0.1.2 -eq 0.1.1 && false30"$0" 0.1.2 -ne 0.1.2 && false31"$0" 0.1.2 -ge 0.1.3 && false32"$0" 0.1.2 -gt 0.1.2 && false33"$0" 0.1.2 -le 0.1.1 && false34"$0" 0.1.2 -lt 0.1.2 && false35true36)37exit 038fi3940if [ "$#" -ne 3 ]; then41echo >&2 "Usage: $0 VERSION-A OP VERSION-B"42echo >&2 "Implemented operators: -eq, -ne, -ge, -gt, -le, -lt"43echo >&2 ""44echo >&2 "Example: $0 1.2.10 -ge 1.2.9"45exit 146fi4748version_a="$1"49op="$2"50version_b="$3"5152sorted="$(echo -ne "${version_a}\n${version_b}\n" | sort -V -r | head -n1)"53case "${op}" in54-eq)55[ "${version_a}" = "${version_b}" ]56;;57-ne)58[ "${version_a}" != "${version_b}" ]59;;60-ge)61[ "${version_a}" = "${sorted}" ]62;;63-gt)64[ "${version_a}" = "${sorted}" ] && [ "${version_a}" != "${version_b}" ]65;;66-le)67[ "${version_b}" = "${sorted}" ]68;;69-lt)70[ "${version_b}" = "${sorted}" ] && [ "${version_a}" != "${version_b}" ]71;;72*)73echo "Unknown operator \"$op\""74exit 175;;76esac777879