ホスティングサーバーの設定と構成に使用するオープンソースシェル/bashスクリプトがあり、cloudflareをインストールするには、次のようにRHELバージョンをインポートします。このコマンド:
RHEL_VERSION=$(rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release) );
問題は、マイナーバージョンが存在すると、メジャーバージョンだけでなく、対応するマイナーバージョンも返されることです。上記のcmdを使用すると、次のものが返されます7.2
。問題は、メジャーバージョン番号だけが必要であることです。
私はおそらく文字列の一部を得るために、その後、などをrpm -q --whatprovides redhat-release
返すことを使用できると思いました。cloudlinux-release-7.2-1.el7.x86_64
sed
awk
el7
パッケージURLを生成するときにこの文字列を使用するには、次のものが必要です。
PACKAGE_URL="http://pkg.cloudflare.com/cloudflare-release-latest.el${RHEL_VERSION}.rpm"
答え1
メジャーバージョンコンポーネントを傍受するには:
... | grep -Eo '^[0-9]*'
-o
この拡張オプションはgrep
一致する部分だけを印刷します。ここで、最初の数字の前にはドット文字が続きます。
答え2
$ RHEL_VERSION=7.2-1.el6
$ echo "${RHEL_VERSION%%[!0-9]*}"
7
$ echo "${RHEL_VERSION%%-*}"
7.2
$ echo "${RHEL_VERSION##*.}"
el6
$ echo "${RHEL_VERSION##*[!0-9]}"
6
答え3
私はいません。回転速度このシステムではできましたが、私はこれができました強く打つ:
PROVIDED=cloudlinux-release-7.2-1.el7.x86_64
RHEL_VERSION=`echo $PROVIDED | sed 's/^.*-release-\([0-9]\).*/\1/'
echo $RHEL_VERSION
" 7
"を出力します。
必要に応じて、-release-
""をより適切な正規表現に置き換えることができます。
次のことを試すことができます。
echo $PROVIDED | sed -ne 's/^[^-]*-\([^-]*\)-.*$/\1/p'
release
私には " "が返されます。[--バージョン: sed(GNU sed) 4.2.2]。
答え4
相談を受けることもできますこの素晴らしい答えオペレーティングシステム名(およびバージョン)を確実に決定することに関連しています。その答えに基づいて、次のことができます。
RHEL_VERSION="$(lsb_release -r | awk '{print $NF}')"
次に、提供された他の回答を使用してメジャーバージョン番号を抽出します。利点は、このアプローチがRHELよりも多くのディストリビューションで機能することです。
バージョン番号が純粋に数字(小数点で区切られたキー番号とマイナー番号)であると確信している場合は、すべての操作を一度に実行できます。
RHEL_MAJOR_VERSION="$(lsb_release -r|awk '{printf "%d\n",$N}')"