2013-03-14 6 views
0

init 스크립트의 출력을 변수에 캡쳐하려고하는데,이 경우 init 스크립트가 log_daemon_msg 및 log_failure_msg를 사용하기 때문에 매우 간단하지 않습니다. 출력이이 파이프를 성공적으로 통과하는 이유는 무엇입니까?변수에 init 스크립트 출력을 캡쳐

이 항목이 아닌 것은 무엇입니까?

두 번째 예에서 $ OUTPUT의 값은 모든 초기화 스크립트 목록입니다. 마찬가지로, 다음 예제는 /etc/init.d에 모든 것을 목록 결과 :

OUTPUT=$(service tomcat7 start) 

답변

0
service tomcat7 start | 
while read OUTPUT 
do 
    echo $OUTPUT 
done 

하나 이상의 라인이 있기 때문에이 작동 - 명령 출력의이. 여러 번 읽어야합니다. 명령에서 여러 행이 전송 되었기 때문입니다.

+0

이것은'service tomcat7 start'와 동일하며, 출력을 변수에 저장하는 방법에 대한 질문을 다루지 않습니다. – chepner

1

두 번째 예에서 read은 서브 쉘에 OUTPUT의 값을 설정합니다. 파이프 라인이 끝나면 하위 셸이 종료되고 OUTPUT 값이 손실됩니다. 세 번째 예제를 사용하십시오.

0

$ OUTPUT에 확장 된 특수 문자 (파일 이름 확장 용)가 포함되어있는 경우 이미 작동하고있는 것처럼 보일 수 있습니다. 시도해보십시오 echo "$OUTPUT".