Scripting

如何在 shell 腳本中檢查 OpenSSL 版本是否為 -ge 1.1.1?

  • December 5, 2019

我的腳本需要 OpenSSL 1.1.1 或更高版本才能執行。

當然,第一步是獲取該系統上是否安裝了 OpenSSL,如果是,則獲取預設 OpenSSL 安裝的版本,如下所示:

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

老實說,我還不知道如何檢查版本本身,如果 - 並且只有 - 這個想法在你面前出現,我會發布我自己的答案。

請堅持你對 POSIX 的回答,遠離 Bashisms。謝謝你。

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”開頭的版本。

有點麻煩,但有效:

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

引用自:https://unix.stackexchange.com/questions/555731