bash 또는 쉘 스크립트를 사용하여 Linux 시스템에서 더 높은 Java 버전을 찾는 방법

bash 또는 쉘 스크립트를 사용하여 Linux 시스템에서 더 높은 Java 버전을 찾는 방법

Java 버전을 테스트하고 비교해야 합니다.

$version > $New_version을 확인하는 까다로운 방법에 대한 제안 사항이 있습니까?

[root@master tmp]#  version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
[root@master tmp]# echo $version
1.8.0_65
[root@master tmp]# New_version=1.8.0_111
[root@master tmp]# [[ $version > $New_version ]] && echo ok
ok
[root@master tmp]#

답변1

"입력이 정렬되어 있는지 확인" 옵션을 사용하여 GNU 정렬 버전의 정렬을 사용하세요.

printf '%s\n%s\n' "$version" "$New_version" | sort -rVc 2>/dev/null && echo ok

2>/dev/null입력이 정렬되지 않은 경우 정렬에 대한 불만을 제거하세요. 입력이 정렬되었는지 알고 싶을 뿐이며 이는 반환 코드에 반영됩니다.

실행 예시:

$ version=1.8.0_65
$ New_version=1.8.0_111
$ printf '%s\n%s\n' "$version" "$New_version" | sort -rVc 2>/dev/null && echo ok
$ version=1.8.0_650
$ printf '%s\n%s\n' "$version" "$New_version" | sort -rVc 2>/dev/null && echo ok
ok
$

또는 어려운 방법으로 수행하십시오.

oldstr=${old//./ }
oldstr=${oldstr//_/ }
newstr=${new//./ }
newstr=${newstr//_/ }
read -a oldarr <<< "$oldstr"
read -a newarr <<< "$newstr"

[ ${oldarr[0]} -ge ${newarr[0]} ] &&
[ ${oldarr[1]} -ge ${newarr[1]} ] &&
[ ${oldarr[2]} -ge ${newarr[2]} ] &&
[ ${oldarr[3]} -gt ${newarr[3]} ] && echo OK

그러면 새 변수가 설정되고 모든 점과 밑줄을 공백으로 바꾼 다음 여기에 문자열로 입력하여 read배열로 분할한 다음 병렬 배열의 각 요소를 비교합니다.

관련 정보