Формат версий - X.X.X.X.X.
Где X - номер.
Каков наилучший способ сравнить две версии?
Я использую следующий код:Как сравнить версии некоторых продуктов в оболочке unix ksh?
compareVersions()
{
VER_1=$1
VER_2=$2
print -R "$VER_1"| IFS=. read v1_1 v1_2 v1_3 v1_4
print -R "$VER_2"| IFS=. read v2_1 v2_2 v2_3 v2_4
RESULT="0"
if [[ "${v1_1}" -lt "${v2_1}" ]]
then
RESULT="-1"
elif [[ "${v1_1}" -gt "${v2_1}" ]]
then
RESULT="1"
elif [[ "${v1_2}" -lt "${v2_2}" ]]
then
RESULT="-1"
elif [[ "${v1_2}" -gt "${v2_2}" ]]
then
RESULT="1"
elif [[ "${v1_3}" -lt "${v2_3}" ]]
then
RESULT="-1"
elif [[ "${v1_3}" -gt "${v2_3}" ]]
then
RESULT="1"
elif [[ "${v1_4}" -lt "${v2_4}" ]]
then
RESULT="-1"
elif [[ "${v1_4}" -gt "${v2_4}" ]]
then
RESULT="1"
fi
echo "$RESULT"
}
Но я не нравится - это очень просто.
Может быть, существует много правильного способа сравнения версий?
Вы уверены, что это не ksh, а не Bash? У Bash нет команды 'print', и вы не можете передать ее в' read'. –
Да - это ksh. Я исправил теги. –
«вы не можете трубить в его чтение» - конечно, вы можете. 'printf" abc \ n "| {читать x; printf "получил $ x \ n"; } ' –