-1

试图将 Debian 版本号放入变量中,我遇到了通过 grep 过滤它的问题。

如果我执行 lsb_release:

~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.1 (wheezy)
Release:        7.1
Codename:       wheezy

为了获得包含描述的行,我尝试了:

# lsb_release -a | grep -i 'Description'
No LSB modules are available.
Description:    Debian GNU/Linux 7.1 (wheezy)

但是,我仍然得到“没有可用的 LSB 模块”这一行。

我尝试通过以下方式专门排除它:

# lsb_release -a | grep -v 'LSB' | grep -i 'Description'
No LSB modules are available.
Description:    Debian GNU/Linux 7.1 (wheezy)

我仍然得到包含字符串“LSB”的行。为什么会这样?我怎样才能单独获得所需的线路?

4

2 回答 2

2

似乎不需要的行正在输出到stderr,而不是stdout。如果您不想要它,请将其重定向到/dev/null. 尝试:

lsb_release -a 2>/dev/null | grep -i 'Description'
于 2013-08-19T11:16:54.477 回答
1

管道 stderr 到 stdout,并使用cut

debian_version=$(lsb_release -a 2>&1 | grep  'Description' | cut -f2)

或者完全丢弃错误消息:

debian_version=$(lsb_release -a 2>/dev/null | grep  'Description' | cut -f2)
于 2013-08-19T11:19:35.713 回答