2011-07-06 6 views
2
a.sh a.sh이라는 스크립트가 있습니다. 그 내용은 다음과 같습니다.

다른 쉘 스크립트에서 호출 된 쉘 스크립트의 출력을 캡쳐합니다.

//a.sh: 

#!/bin/bash 
temp=0 
while [ "$temp" -ne 500 ] 
do 
    echo `date` 
    temp=`echo "$temp+1" | bc` 
    sleep 1 
done 
---------------------------------- 

b.sh이라는 다른 스크립트는 다음과 같습니다.

// b.sh: 

#!/bin/bash 

`a.sh` 

exit 
---------------------------------- 

a.sh을 별도로 실행하면 출력 ..하지만, 내가 b.sh를 실행할 때 콘솔에서 출력을 볼 수 없습니다. (a.sh의 출력을 리디렉션하기 위해 몇 번 시도했지만 성공하지 못했습니다).

그래서, 내가 필요로하는 것은 콘솔에서 b.sh를 실행할 때 a.sh의 내용물을 볼 수있는 리다이렉션입니다.

감사합니다, 라비.

+0

누군가 다시 포맷하십시오. 읽을 수 없습니다. – themel

답변

5
`a.sh` 

는 a.sh의 출력을 가지고 인수를 명령로 사용합니다. 당신은 아래와 같이 b.sh에서 역 인용 부호를 제거하십시오

`a.sh` 
+0

이제 우리는 실제로 질문을 읽을 수 있습니다 :-) – Szocske

+0

설명해 주셔서 고맙습니다.이 말은 간단히 말해서, 나의 역기능에 대한 이해가 틀 렸습니다. 계몽에 감사드립니다. – Ravishankar

+0

감사의 말을 많이 들어 주시면 감사하겠습니다. 나의 역학에 대한 이해가 정확하지 않다는 것을 의미합니다. 도와 주셔서 감사합니다. – Ravishankar

0

"정상적으로 작동합니다."

$ PATH에 a.sh가 있습니까?

그렇지 않은 경우 경로와 함께 호출해야합니다. ./a.sh 당신의 b.sh 수단에

+0

a.sh는 b.sh에서 날짜 형식을 출력합니다.'$ (a.sh)'는 날짜 출력을 받아 실행하려고 시도합니다. –

+0

올바른 서식을 사용하면 더 많은 것을 볼 수 있습니다 :-) 백틱을 버리거나 에코'./a.sh'를 수행하십시오 – Szocske

+0

정리 해줘서 고마워요. 그래서, 내 백틱에 대한 이해가 정확하지 않다는 것을 의미합니다. 도와 주셔서 감사합니다. – Ravishankar

0

$A_SH_PATH/a.sh 대신 b.sh에 a.sh을 실행해야합니다. 이 작품은 나를 위해.

#!/bin/bash 

a.sh 

exit 
+0

설명을 해주셔서 고마워요. 그래서, 이것은 나의 backticks에 대한 이해가 정확하지 않다는 것을 의미합니다. 도와 주셔서 감사합니다. – Ravishankar

0

a.sh의 다음 라인 :

 
    echo `date` 
    temp=`echo "$temp+1" | bc` 

과 같이 다시 쓸 수있다 :

 
    date 
    : $((temp += 1)) 

당신이 발생하는 근본 문제는 역 따옴표의 오해, 그리고 것 같다 왜 "echo ` date `"이 "날짜"와 정확히 똑같은지 (공백 만 다름) 이해해야합니다. 두 번째 줄로 변경 한 것은 개인적인 취향 (더 효율적입니다)입니다.

+0

해명을위한 많은 감사 ...그래서, 이것은 backticks에 대한 나의 이해가 정확하지 않다는 것을 의미합니다. 도와 주셔서 감사합니다. – Ravishankar

관련 문제