'lsb_release -a' печатает дополнительную строку при использовании ее в скрипте bash

Я пишу сценарий bash, в котором есть подзадача печати имени Ubuntu, на котором работает система. Я сделал:

ubuntu_ver=$(lsb_release -a | grep Description | cut -d":" -f2)
echo $ubuntu_ver

Ubuntu 12.04 LTS хранится в переменной ubuntu_ver, но в верхней части выводится дополнительная строка. Выход был:

No LSB modules are available.
Ubuntu 12.04.4 LTS

Как предотвратить печать "Нет модулей LSB..."?
Фактически эта строка печатается всякий раз, когда я пытаюсь сохранить что-либо в переменной из команды 'lsb_release -a'.

2 ответа

Решение

Фактически эта строка печатается всякий раз, когда я пытаюсь сохранить что-то в переменной из команды lsb_release -a

Это говорит о том, что ошибочная строка на самом деле является сообщением об ошибке. Откажитесь от этого:

ubuntu_ver=$(lsb_release -a 2>/dev/null | grep Description | cut -d":" -f2)

-a включает в себя -v который возвращает список модулей lsb, поэтому вы получаете сообщение, что ни один из них не найден.

Также я бы предложил просто попросить описание (-d) и опуская заголовок (-s):

ubuntu_ver=$(lsb_release -ds)
echo $ubuntu_ver
Другие вопросы по тегам