2013-12-09 2 views
2

정말 잘 작동하는 XML 파일의 일부 값을 구문 분석하기 위해 쉘 스크립트에서 xpath (Mac OS X 10.9 usr/bin/xpath5.16으로 제공)를 사용하고 있습니다. 그러나 그것은 필자가 스크립트에서보고 싶지 않은 자세한 출력을 제공한다. 사실 변수에 결과 (속성의 내용) 만 저장하려고합니다. 변수 content 실제로 속성의 내용이 포함되어 실행 후over-verbose xpath-output을 억제하는 방법은 무엇입니까?

content=$(xpath ../../AndroidManifest.xml /manifest/@android:versionCode) 
echo "$content" 

그러나 또한 내가 제거 할 몇 가지 자세한 출력이 있습니다. 여기있다 :

Found 1 nodes: 
-- NODE -- 

android:versionCode="38" 

참고 : 출력의 끝에서 "38"나머지 xpath의 출력 인 echo "$content" 라인에서 유래.

답변

3

해결책을 찾았습니다. 단순히 명령에 2>/dev/null를 추가 :

content=$(xpath ../../AndroidManifest.xml /manifest/@android:versionCode 2>/dev/null) 

출력 :

android:versionCode="38" 
2

man xpath에서 :

-q 
    Be quiet. Output only errors (and no separator) on stderr. 

더 나은 사용 xpath -q ... 대신 모든 표준 에러 - 메시지를 배관. 이렇게하면 실제 오류이 계속 인쇄되지만 다른 상태 출력/노드 분배기는 인쇄되지 않습니다.

+2

이미 인터넷 검색으로이 플래그를 발견로 리디렉션, 불행하게도 그것은 맥 OS X의 – ubuntudroid

0

-q은 저에게 적합하지 않았습니다. STD-ERR에의 XPath utulity 인쇄 추가 출력하기 때문에, 단지는/dev/null로

xpath file.xml '/foo/bar/text()' 2>/dev/null 
+0

에 제공된 XPath는 버전에 적용되지 않습니다 내 자신의 응답을 참조하십시오. ;) – ubuntudroid

관련 문제