Как узнать версию Ubuntu в системе с помощью скрипта .sh (bash)?

Итак, я пытаюсь создать bash / исполняемый файл, и мне нужно знать номер версии Ubuntu в системе. Все способы, которые я нашел в Интернете, состоят из lsb_release -r, однако я не могу вывести это в переменную.

Есть ли способ получить текущую версию Ubuntu и сохранить ее как переменную в исполняемом файле оболочки?

8
задан 1 August 2019 в 05:35

5 ответов

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
21
ответ дан 23 November 2019 в 05:21

Альтернатива должна использовать /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
10
ответ дан 23 November 2019 в 05:21

lsb_release управляйте поддерживает -s (или --short) опция распечатать просто информацию, которую Вы просите а не заголовок, в котором говорится, какая информация, которая является.

Для получения просто номера версии, таким образом достаточно работать:

lsb_release -sr

Например, на Ubuntu 18.04 LTS, что выводы:

18.04

Как с методом в ответе WinEunuuchs2Unix, все еще разумно использовать замену команды для присвоения этого вывода переменной оболочки. Предположим, Вы хотели ver переменная для содержания номера выпуска:

ver="$(lsb_release -sr)"

С -s, нет никакой потребности проанализировать число с cut, sed, grep, awk, более сложные формы расширения параметра, и т.п.

В этом использовании, " " кавычки являются дополнительными, но я обычно предлагаю заключить в кавычки расширение параметра и другие расширения оболочки кроме тех случаев, когда существует причина не к.

8
ответ дан 23 November 2019 в 05:21

Короткий и простой lsb_release команды.

  • К печатной версии только

    lsb_release -sr
    

    Вывод:

    18.04
    
  • Распечатать описание

    lsb_release -sd
    

    Вывод:

    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
5
ответ дан 23 November 2019 в 05:21

Сокращение WinEunuuchs2Unix ответа немного:

distro=$(lsb_release -i |cut -f2)
echo "${distro,,}"

os_version=$(lsb_release -r |cut -f2)
echo "${os_version}"

В Ubuntu 20.04 показано следующее:

ubuntu
20.04
0
ответ дан 15 September 2020 в 23:57

Другие вопросы по тегам:

Похожие вопросы: