특정 프로그램 버전이 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