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