![如何在 shell 脚本中检查 OpenSSL 版本是否为 -ge 1.1.1?](https://linux22.com/image/165171/%E5%A6%82%E4%BD%95%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%A3%80%E6%9F%A5%20OpenSSL%20%E7%89%88%E6%9C%AC%E6%98%AF%E5%90%A6%E4%B8%BA%20-ge%201.1.1%EF%BC%9F.png)
我的脚本需要 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