= シンボル [重複] の後に別の os-release テキストファイルに値を保存します。

= シンボル [重複] の後に別の os-release テキストファイルに値を保存します。

os-versionの値をコマンドに保存したいですcat /etc/os-release。 cat /etc/os-releaseの出力は次のようになります。

VERSION="4.4"
ID="someId"
ID_LIKE="someIdLike"

アポストロフィナ "VERSION"テキストなしでバージョン "4.4"を変数に保存するシェルコマンドが必要です。私がこれまでにしたことは

variable==`grep 'VERSION' /etc/os-release

これは私に変数="VERSION="4.4""を与えます。私はバージョンの数値である4.4が欲しいだけです。

答え1

Ubuntuのマニュアルには、ファイルがシェルと互換性のある単純な変数割り当てを含める必要があり、ファイルを取得できる必要があることが示されていますos-release/etc/os-release

デフォルトのファイル形式は、os-release環境に似たシェル互換変数割り当ての改行で区切られたリストです。設定はシェルスクリプトから得ることができます[...]

$ ( . /etc/os-release && printf '%s\n' "$VERSION" )
20.04.3 LTS (Focal Fossa)

上記では、対話型環境を汚染しないようにサブシェルにファイルをインポートしました。シェルスクリプトでは、おそらくこれについてあまり気にしません。ファイルをインポートしたら、変数の値を印刷しますVERSION

VERSION_IDパッチのバージョン番号なしで、デフォルトのバージョン番号が私のシステムの変数に提供されます。それでもVERSION、標準変数拡張を使用して最初のスペースの後ろのすべてのエントリを削除すると、変数に含まれるパッチバージョンを取得できます。

$ ( . /etc/os-release && printf '%s\n' "${VERSION%% *}" "$VERSION_ID" )
20.04.3
20.04

システムでは、VERSION変数に文字列4.4のみが含まれているように見えるため、追加の処理なしでファイルをインポートして使用できます"$VERSION"

答え2

lsb_releaseバージョン番号を取得するために使用されます。

variable=$(lsb_release -rs)

man lsb_release:

-r, --release       displays release number of distribution.
-s, --short   displays all of the above information in short output format.

答え3

上記の答えは本当に役に立ちましたが、他の解決策が見つかったのでありがとう。https://unix.stackexchange.com/a/498788これは、値をos-release次のように保存できることを示しています。

VERSION=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
echo $VERSION

関連情報