a.m*_*aei 11 command-line bash scripts
所以我正在尝试创建一个 bash/可执行文件,并且我需要知道系统上 Ubuntu 的版本号。我在网上找到的所有方法都包含lsb_release -r
,但是我无法将其输出到变量中。
有什么方法可以获取当前版本的 Ubuntu 并将其另存为 shell 可执行文件中的变量?
Win*_*nix 24
Var=$(lsb_release -r)
echo "$Var"
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩。
对于数字部分,只需添加以下内容:
NumOnly=$(cut -f2 <<< "$Var")
echo "$NumOnly"
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
您可以随时使用. /etc/lsb-release
. 要在您的终端中进行测试:
$ . /etc/lsb-release
$ echo $DISTRIB_RELEASE
16.04
$ echo $DISTRIB_DESCRIPTION
Ubuntu 16.04.6 LTS
Run Code Online (Sandbox Code Playgroud)
ter*_*don 11
另一种方法是使用该/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
Run Code Online (Sandbox Code Playgroud)
所以解析它的一种简单方法是简单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
Run Code Online (Sandbox Code Playgroud)
为避免不必要地设置所有这些变量,您可以在subshell 中获取文件,回显您需要的变量并退出 subshell:
$ ( . /etc/os-release ; echo $VERSION_ID)
18.04
Run Code Online (Sandbox Code Playgroud)
或者,您始终可以直接解析文件:
$ grep -oP 'VERSION_ID="\K[\d.]+' /etc/os-release
18.04
Run Code Online (Sandbox Code Playgroud)
该lsb_release
命令支持-s
(或--short
) 选项以仅打印您要求的信息,而不是说明信息类型的标题。
要获得版本号,运行以下命令就足够了:
lsb_release -sr
Run Code Online (Sandbox Code Playgroud)
例如,在 Ubuntu 18.04 LTS 上,输出:
18.04
Run Code Online (Sandbox Code Playgroud)
与WinEunuuchs2Unix's answer 中的方法一样,使用命令替换将此输出分配给 shell 变量仍然是合理的。假设您希望ver
变量保存版本号:
ver="$(lsb_release -sr)"
Run Code Online (Sandbox Code Playgroud)
使用-s
,无需使用cut
、sed
、grep
、awk
、更复杂的参数扩展形式等来解析数字。
在这种用法中,"
"
引号是可选的,但我通常建议引用参数扩展和其他shell 扩展,除非有理由不这样做。
简短而简单的lsb_release
命令。
仅打印版本
lsb_release -sr
Run Code Online (Sandbox Code Playgroud)
输出:
18.04
Run Code Online (Sandbox Code Playgroud)打印说明
lsb_release -sd
Run Code Online (Sandbox Code Playgroud)
输出:
Ubuntu 18.04.2 LTS
Run Code Online (Sandbox Code Playgroud)-s show requested information in short format
-r show release number of this distribution
-d show description of this distribution
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6130 次 |
最近记录: |