Định dạng của các phiên bản - X.X.X.X.
Trong đó X - số.
Cách tốt nhất để so sánh hai phiên bản là gì?
tôi sử dụng đoạn mã sau:Làm thế nào để so sánh các phiên bản của một số sản phẩm trong vỏ 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"
}
Nhưng tôi không thích nó - đó là rất đơn giản.
Có thể có nhiều cách chính xác để so sánh các phiên bản?
Bạn có chắc chắn đó không phải là ksh thay vì Bash? Bash không có lệnh 'print' và bạn không thể đi vào' read' của nó. –
Có - đây là ksh. Tôi đã sửa thẻ. –
"bạn không thể đọc được đường dẫn" - tất nhiên bạn có thể. 'printf" abc \ n "| {đọc x; printf "có $ x \ n"; } ' –