因此,我尝试创建一个 bash/可执行文件,我需要知道系统上的 Ubuntu 版本号。我在网上找到的所有方法都包括lsb_release -r
,但是我无法将其输出到变量中。
有没有办法获取 Ubuntu 的当前版本并将其保存为 shell 可执行文件中的变量?
答案1
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
答案2
另一种方法是使用/etc/os-release
文件。它被格式化为 shell 变量列表:
$ 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
为了避免不必要地设置所有这些变量,您可以在子壳,回显你需要的变量并退出子shell:
$ ( . /etc/os-release ; echo $VERSION_ID)
18.04
或者,您也可以直接解析文件:
$ grep -oP 'VERSION_ID="\K[\d.]+' /etc/os-release
18.04
答案3
这lsb_release
命令支持-s
(或--short
) 选项,只打印您要求的信息,而不打印说明信息类型的标题。
要获取版本号,只需运行以下命令:
lsb_release -sr
例如,在 Ubuntu 18.04 LTS 上,输出:
18.04
与方法一样WinEunuuchs2Unix 的答案,使用仍然是合理的命令替换将此输出分配给 shell 变量。假设您希望ver
变量保存版本号:
ver="$(lsb_release -sr)"