뭘 이런걸..

Posted
Filed under Tech/프로그래밍
만들 때 마다 헷갈리고 까먹어서 기록해 놓아야 겠다.

# USAGE: compare_version OLD NEW
# RETURN:
# (OLD == NEW) return 0
# (OLD < NEW) return 1
# (OLD > NEW ) return 2
function compare_version {
local opt
[[ $1 == $2 ]] && return 0

# -V option 이 지원되지 않을 경우, 숫자 이외의 문자가 들어간 버전 비교가
# 정확하지 않을 수 있다. 예) 2.1.9-3el6_7.2
sort -V >& /dev/null <<< "aa"
[[ $? == 0 ]] && opt="V"

test "$(printf '%s\n' "$@" | sort -r${opt} | head -n 1)" != "$1";
res=$?
[[ $res == 0 ]] && return 1 || return 2
}


결과

[root@host ~]# source version_comapre.sh
[root@host ~]# compare_version 3 3
0
[root@host ~]# compare_version 3 4
1
[root@host ~]# compare_version 4 3
2
[root@host ~]#
2020/06/08 16:41 2020/06/08 16:41