'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