쉘 스크립트에서 OpenSSL 버전이 -ge 1.1.1인지 확인하는 방법은 무엇입니까?

쉘 스크립트에서 OpenSSL 버전이 -ge 1.1.1인지 확인하는 방법은 무엇입니까?

내 스크립트를 실행하려면 OpenSSL 1.1.1 이상이 필요합니다.

물론 첫 번째 단계는 OpenSSL이 시스템에 설치되어 있는지 확인하고, 그렇다면 다음과 같이 기본 OpenSSL 설치 버전을 확인하는 것입니다.

command -v openssl
openssl version | awk '{print $2}'

솔직히 말해서 버전 자체를 확인하는 방법을 아직 모르겠습니다. 귀하가 확인하기 전에 아이디어가 나에게 올 경우에만 내 답변을 게시하겠습니다.

POSIX 답변을 따르고 Bashisms를 멀리하십시오. 감사해요.

답변1

AWK는 POSIX의 일부이므로 괜찮습니다.

openssl version | awk '$2 ~ /(^0\.)|(^1\.(0\.|1\.0))/ { exit 1 }'

1.1.1보다 크거나 같은 버전을 찾는 대신 1.1.1보다 낮은 버전("0.", "1.0" 또는 "1.1.0"으로 시작하는 버전)을 찾습니다.

답변2

약간 번거롭지만 작동합니다.

export openssl_minversion=1.1.1
if echo -e "$(openssl version|awk '{print $2}')\n${openssl_minversion}" | sort -V | head -1 | grep -q ^${openssl_minversion}$;then
  echo okay
else
  echo nokay
fi

관련 정보