だから私はbash /実行可能ファイルを作成しようとしています、そしてそれはシステム上のUbuntuのバージョン番号を知る必要があります。オンラインで見つけた方法はすべてで構成されていますがlsb_release -r
、これを変数に出力することはできません。
Ubuntuの現在のバージョンを取得してシェル実行可能ファイルの変数として保存する方法はありますか?
だから私はbash /実行可能ファイルを作成しようとしています、そしてそれはシステム上のUbuntuのバージョン番号を知る必要があります。オンラインで見つけた方法はすべてで構成されていますがlsb_release -r
、これを変数に出力することはできません。
Ubuntuの現在のバージョンを取得してシェル実行可能ファイルの変数として保存する方法はありますか?
回答:
Var=$(lsb_release -r)
echo "$Var"
トリックを行う必要があります。
数値部分の場合、これを追加するだけです。
NumOnly=$(cut -f2 <<< "$Var")
echo "$NumOnly"
lsb-release
変数ファイル/usr/bin/lsb_release
Pythonスクリプトです。これは、Python言語の入門として役立つ短いスクリプトです。他の人が述べたように、バージョン番号のみを取得するより短い方法はを使用することlsb_release -sr
です。
この/etc/lsb-release
ファイルは、lsb_release -a
コマンドによって提供される同じ情報で環境変数を定義します。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
これらの環境変数は、を使用していつでも含めることができます. /etc/lsb-release
。端末でテストするには:
$ . /etc/lsb-release
$ echo $DISTRIB_RELEASE
16.04
$ echo $DISTRIB_DESCRIPTION
Ubuntu 16.04.6 LTS
Release: 18.04
。動作します。出力します。しかし、数を取得する方法はありますか?スクリプトのif / else関数でこの変数を使用できるようにしたいと思います。if / elseの目的は、ubuntuのディストリビューション用に私のアプリケーションの正しいバージョンをダウンロードすることです。
/etc/os-release
代わりに、ファイルを使用することもできます。これはシェル変数のリストとしてフォーマットされます:
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
したがって、source
ファイルを解析する簡単な方法は、単にファイルを使用することです。
$ . /etc/os-release
$ echo $NAME
Ubuntu
$ echo $VERSION
18.04.2 LTS (Bionic Beaver)
$ echo $PRETTY_NAME
Ubuntu 18.04.2 LTS
$ echo $VERSION_ID
18.04
これらすべての変数を不必要に設定しないようにするには、サブシェルでファイルを取得し、必要な変数をエコーして、サブシェルを終了します。
$ ( . /etc/os-release ; echo $VERSION_ID)
18.04
または、常にファイルを直接解析することもできます。
$ grep -oP 'VERSION_ID="\K[\d.]+' /etc/os-release
18.04
lsb_release
コマンドはサポートしています-s
(または--short
種類の情報であるものを言うだけで、あなたが求める情報ではなく、ヘッダを印刷する)オプションを選択します。
したがって、バージョン番号のみを取得するには、次を実行するだけで十分です。
lsb_release -sr
たとえば、Ubuntu 18.04 LTSでは、次のように出力されます。
18.04
WinEunuuchs2Unixのanswerのメソッドと同様に、この出力をシェル変数に割り当てるためにコマンド置換を使用することは依然として妥当です。ver
変数にリリース番号を保持したいとします。
ver="$(lsb_release -sr)"
では-s
、との数を解析する必要はありませんcut
、sed
、grep
、awk
、のより複雑なフォームパラメータ展開、などが。
この使用法では、"
"
引用符はオプションですが、そうでない理由がある場合を除いて、パラメーター展開やその他のシェル展開を引用することをお勧めします。