J'essaie donc de créer un bash/exécutable, et j'ai besoin de connaître le numéro de version d'Ubuntu sur le système. Tous les moyens que j'ai trouvés en ligne consistent en lsb_release -r
, mais je ne peux pas produire cela dans une variable.
Existe-t-il un moyen d'obtenir la version actuelle d'Ubuntu et de l'enregistrer en tant que variable dans un exécutable Shell?
Var=$(lsb_release -r)
echo "$Var"
Devrait faire l'affaire.
Pour la partie numérique, ajoutez seulement ceci:
NumOnly=$(cut -f2 <<< "$Var")
echo "$NumOnly"
lsb-release
fichier de variables/usr/bin/lsb_release
est un script Python. C'est un script court qui sert de bonne introduction au langage python. Comme d'autres l'ont mentionné, un moyen plus court d'obtenir le le numéro de version est uniquement avec lsb_release -sr
.
Le /etc/lsb-release
Le fichier définit les variables d'environnement avec les mêmes informations fournies par le lsb_release -a
commande:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
Vous pouvez inclure ces variables d'environnement à tout moment à l'aide de . /etc/lsb-release
. Pour tester dans votre terminal:
$ . /etc/lsb-release
$ echo $DISTRIB_RELEASE
16.04
$ echo $DISTRIB_DESCRIPTION
Ubuntu 16.04.6 LTS
Une alternative consiste à utiliser le /etc/os-release
fichier à la place. Ceci est formaté comme une liste de variables 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
Donc, une façon simple de l'analyser est de simplement source
le fichier:
$ . /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
Pour éviter de définir toutes ces variables inutilement, vous pouvez source le fichier dans un subshell , faire écho à la variable dont vous avez besoin et quitter le sous-shell:
$ ( . /etc/os-release ; echo $VERSION_ID)
18.04
Alternativement, vous pouvez toujours simplement analyser le fichier directement:
$ grep -oP 'VERSION_ID="\K[\d.]+' /etc/os-release
18.04
Le lsb_release
commande prend en charge un -s
(ou --short
) option pour imprimer uniquement les informations que vous demandez et non l'en-tête qui indique de quel type d'informations il s'agit.
Pour obtenir uniquement le numéro de version, il suffit donc d'exécuter:
lsb_release -sr
Par exemple, sur Ubuntu 18.04 LTS, cela génère:
18.04
Comme avec la méthode dans réponse de WinEunuuchs2Unix , il est toujours raisonnable d'utiliser substitution de commande pour affecter cette sortie à une variable Shell. Supposons que vous vouliez que la variable ver
contienne le numéro de version:
ver="$(lsb_release -sr)"
Avec -s
, il n'est pas nécessaire d'analyser le nombre avec cut
, sed
, grep
, awk
, formes plus complexes de expansion des paramètres , ou similaire.
Dans cet usage, le "
"
quotes sont facultatifs, mais je suggère généralement de citer expansion des paramètres et autres extensions du shell sauf quand il y a une raison de ne pas le faire.
Court et simple lsb_release
commandes.
Pour imprimer uniquement la version
lsb_release -sr
Production:
18.04
Pour imprimer la description
lsb_release -sd
Production:
Ubuntu 18.04.2 LTS
-s show requested information in short format
-r show release number of this distribution
-d show description of this distribution