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
배열로 분할한 다음 병렬 배열의 각 요소를 비교합니다.