2013-08-19 3 views
-1

데비안 버전 번호를 변수에 넣으려고하면 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"를 포함하는 라인을 얻을. 왜 이런 일이 일어나는 걸까요? 원하는 줄을 어떻게 만들 수 있습니까?

답변

2

바람직하지 않은 줄이 stderr이 아닌 stdout으로 출력되고있는 것으로 보입니다. 원하지 않으면 /dev/null으로 리디렉션하십시오. 표준 출력으로

lsb_release -a 2>/dev/null | grep -i 'Description' 
1

파이프 표준 오류 및 사용 cut : : 시도

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

을 또는 전혀 오류 메시지를 던져 :

debian_version=$(lsb_release -a 2>/dev/null | grep 'Description' | cut -f2) 
관련 문제