2017-03-01 7 views
1

으로 리디렉션합니다.이 코드는 오류를 발생시키고 STDOUT을 억제하기 위해 작동하지만 STDERR을 ERROR 변수에 저장하지 않습니다.STDERR을 변수

ERROR = $(memtester 900 1 > /dev/null) 
+0

에 표준 출력 리디렉션합니다. – Barmar

+0

그리고 대문자 변수 이름은 응용 프로그램 환경 변수 용으로 예약되어 있으므로 사용하면 안됩니다. – Barmar

+0

stderr를 stdout으로 리디렉션하는 작업은 2> & 1에 의해 수행되며 &는 파일 설명자를 따르는 데 사용됩니다. 그래서 다음 코드는 당신을 위해 작동합니다. '오류 = $ ({memtester 900>/dev/null;} 2> & 1' – rowan

답변

2

이처럼 캡처 할 수 있습니다 : 리디렉션 연산자의

error=$(memtester 900 1 2>&1 >/dev/null) 

위해 여기에 중요하다.

  • 2>&1은 - 표준 오류는
  • >/dev/null을 stdout에 리디렉션 - 당신은`=`쉘에서 변수 할당의 주위에 공간을 가질 수 없습니다 /dev/null
+0

왜/dev/null로 리디렉션해야합니까? 출력을 잃지 않습니까? – djna

+3

@djna 정상 출력은 실제로 손실됩니다. 하지만 분명히 OP에 의해 명령 오류 (있는 경우) 만 캡처하는 것입니다 .'>/dev/null'이 변수는 출력도 포함하게됩니다 –

+0

@ user2489314 :이 작업을 수행 했습니까 – anubhava