**프로그램** 버전이 x 이하인지 확인하는 방법 [중복]

**프로그램** 버전이 x 이하인지 확인하는 방법 [중복]

특정 프로그램 버전이 x.xx.xx 버전보다 낮거나 같은지 알아야 하는 쉘 스크립트를 작성 중입니다.

다음은 내가 원하는 작업을 시도하고 설명하는 샘플 스크립트입니다.

#!/bin/bash

APPVER="`some command to output version | grep x.xx*`"

if [[ "$APPVER" is smaller or equal to "x.xx*" ]]; then
    do something
else
    do something else
fi

이를 수행할 수 있는 방법이 있습니까? 숫자를 비교하는 방법을 찾았지만 버전 번호에서는 작동하지 않습니다. 가능한 한 프로그램을 전혀 사용하지 않거나 최소한으로 사용하는 솔루션이 필요합니다.

도움을 주시면 감사하겠습니다!

답변1

GNU 정렬이 있는 경우 해당 정렬을 사용하십시오.버전 비교 모드.

if { echo "$APPVER"; echo "x.y.z"; } | sort --version-sort --check; then
  echo "App version is x.y.x or less"
fi

답변2

Bash에서는 다음을 수행할 수 있습니다 printf -v.

vercomp(){
   local a b IFS=. -; set -f
   printf -v a %08d $1; printf -v b %08d $3
   test $a "$2" $b
}

if vercomp 2.50.1 \< 2.6; then
   echo older
else
   echo newer
fi

관련 정보