Scripting
如何在 shell 腳本中檢查 OpenSSL 版本是否為 -ge 1.1.1?
我的腳本需要 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