2017-12-07 19 views
0

Ubuntu 16 Server에서/usr/lib/update-notifier/apt-check의 결과를 모니터링 도구에 대한 XML 응답을 만들기 위해 배열로 가져 오려고합니다. 어떻게 든이 apt-check의 가치는 단지 내 변수에 들어가기를 거부합니다. 간단 함 술의 경우 부분에 XML 생성가 생략되어 있습니다.변수에서 Ubuntu 업데이트에 대한 결과 반환

#!/bin/bash 
APTCHECK="/usr/lib/update-notifier/apt-check" 
APTResult="$(${APTCHECK})" 
echo "Result is $APTResult" 
exit 0 

이제이 코드를 bash -x와 함께 실행하면 결과가 터미널에 반환되지만 변수에 할당되지는 않습니다. 내가 "명령"을 "ls -lah"와 같은 단순한 것으로 대체하면 모든 것이 잘 작동합니다.

왜 이것이 작동하지 않는지 모르겠습니까? 누구?

+1

리디렉션 stderr :'2> & 1' –

+1

스크립트는 전혀 유용하지 않습니다. 대부분 해가 없지만 종료 코드가 손실됩니다. 절대 개선은 [echo'의 쓸데없는 사용] (http://www.iki.fi/era/unix/award.html#echo)을 제거하는 것이지만, 실제 종료 코드를 잃는 것은 * 유일한 * 효과. – tripleee

+0

배열에 할당하는 것은'array = (command> & 2)'와 같을 것이다. 그러나 배열의 순서는 특별히 예측 가능하거나 유용하지 않을 것이다. 그리고 배열을 검색하기위한 구문은 새로운 복잡성이 될 것이다. – tripleee

답변

1

apt-check이 stderr에 인쇄되므로 aptresult=$(/usr/lib/update-notifier/apt-check 2>&1) 대신 그 값을 캡처해야합니다.

다른 옵션은 --human-readable 스위치이며, 표준 출력으로 인쇄됩니다. 유일한 문제는 텍스트 출력을 구문 분석해야한다는 것입니다 (텍스트 출력이 실제로 원하는 경우는 제외).

+0

쉬운 방법은 있습니까? 스크립트가 stderr로 출력을 보냈을 때? –