尝试将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”的行。为什么会这样?我怎样才能单独获得所需的线?
答案 0 :(得分:2)
似乎不需要的行输出到 stderr ,而不是 stdout 。如果您不想要它,请将其重定向到/dev/null
。尝试:
lsb_release -a 2>/dev/null | grep -i 'Description'
答案 1 :(得分: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)