我的脚本需要 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