Red Hatボックスの実際のバージョンレベルを変数にドラッグする方法を作成する必要があります。
/etc/redhat-release
ファイルに集中しています。私はこれが単純なものだと思いましたがawk '{ print $7 }'
、RH8は値を6番目の単語に変更したため、簡単な解決策は消えました。 (同様の質問でこのサイトを検索しましたが、答えはすべて値の安定した場所に関連していました。この場合、OSバージョンがどのフィールド番号にあるのかわかりません。)
例:
Red Hat Enterprise Linux Server release 6.10 (Santiago)
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Red Hat Enterprise Linux release 8.6 (Ootpa)
Red Hat Enterprise Linux release 8.5 (Ootpa)
私は使用するのがsed
最善の選択だと思います。
6.
7.
orで始まる最初の単語を見つけて8.
値([678]\.
)を取得します。おそらくこれが最も安全でしょう。または捕まった後の最初の単語
release
。
sed
awk
他のツールを使用してこれを行うための素敵で簡単な方法についての提案があると思います。
答え1
次のいずれかrelease
を解析できます。
/etc/os-release
RHELは単に変数をインポートしてOSバージョンを提供できると思います。
source /etc/os-release; echo $VERSION_ID
また、他の便利なオペレーティングシステム関連の変数もたくさん含まれています。
答え2
次の目的で使用できますlsb_release
。
$ lsb_release -rs
8.6
lsb_release
別の方法は解析する必要はありません。/etc/os-release
(これは提案ですRHEL 9以上):
awk -F'[="]' '/VERSION_ID/ { print $3 }' /etc/os-release
答え3
次のようにして、文字列の最後のフィールドの前のフィールドを分離できます。
... awk '{print $(NF-1)}'
たとえば、
echo "Red Hat Enterprise Linux Server release 6.10 (Santiago)"|awk '{print $(NF-1)}'
6.10
echo "Red Hat Enterprise Linux release 8.5 (Ootpa)"|awk '{print $(NF-1)}'
8.5
答え4
cat file.txt
Red Hat Enterprise Linux Server release 6.10 (Santiago)
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Red Hat Enterprise Linux release 8.6 (Ootpa)
Red Hat Enterprise Linux release 8.5 (Ootpa)
出力
awk '{for(i=1;i<=NF;i++){if($i ~ /[0-9]/){print $i}}}' file.txt
6.10
7.9
8.6
8.5