Итак, я пытаюсь создать 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
Альтернатива должна использовать /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, все еще разумно использовать замену команды для присвоения этого вывода переменной оболочки. Предположим, Вы хотели ver
переменная для содержания номера выпуска:
ver="$(lsb_release -sr)"
С -s
, нет никакой потребности проанализировать число с cut
, sed
, grep
, awk
, более сложные формы расширения параметра, и т.п.
В этом использовании, "
"
кавычки являются дополнительными, но я обычно предлагаю заключить в кавычки расширение параметра и другие расширения оболочки кроме тех случаев, когда существует причина не к.
Короткий и простой 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
Сокращение 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