= シンボル [重複] の後に別の 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"

おすすめ記事