2017-11-22 2 views
0

제어 할 수없는 다른 스크립트를 실행하기 위해 기본 bash 스크립트를 만들었습니다.터미널 라인 배시 스크립트 읽기

이 두 번째 스크립트는 나머지 스크립트에 입력으로 사용하려는 오류 코드와 같은 터미널 텍스트를 출력합니다. 나는 bash 스크립트로 코딩하기가 매우 어렵다. 터미널에 방금 출력 된 내용을 읽어 들이고 내부 변수와 동등하게 설정하는 내장 함수가 있습니까?

+0

당신이 파이프를'사용할 수 |에 입력으로 다른 스크립트의 출력을 리디렉션' 너의 대본? 오류 Z 드는 STDOUT 대신 STDERR의 일부일 수 있습니다. – beroe

+0

'myVar = $ (/ path/to/other/script.sh 2> &1); echo "$ myVar"는 시작할 수있는 한 곳입니다. 행운을 빌어 요. – shellter

+0

myVar이 트릭을 만들었습니다! – user8983691

답변

1

'|' 두 번째 스크립트의 입력으로 첫 번째 스크립트의 출력을 얻지 만 더 이상 터미널에 표시되지 않습니다.

또 다른 옵션은 'tee'일 수 있습니다.이 옵션을 사용하면 나머지 스크립트에 대한 입력으로도 줄 수 있지만 여전히 터미널에 나타나게 할 수 있습니다.

0

당신은 다른 스크립트 라인 단위의 출력을 읽고 싶다면, 당신은

/path/to/other/script.sh 2>&1 | while IFS= read -r line; do 
    do_something_with "$line" 
    # ... 
done 

여기 bash에 대한 좋은 정보를 많이있다 할 수 있습니다 : 당신은 요구하고 https://stackoverflow.com/tags/bash/info

0

을 약 command substitution 인 Bash의 구문 및 명령 파이프 라인의 표준 출력을 캡처 할 수있는 다른 셸 언어

예를 들어이 값은 date의 출력을 캡처 한 다음 큰 문자열의 일부로 출력합니다.

the_date=$(date) 
echo "The current date is ${the_date}. What a time to be alive!" 

당신은 변수 할당을 건너 뛰고 바로 문자열의 명령 치환을 넣을 수 :

echo "The current date is $(date). What a time to be alive!"