2013-02-19 3 views
3

나는 bash 스크립트를 가지고 있고 그 안에 cshell에서 몇 가지 명령을 실행해야합니다.bash에서 cshell에 들어가기

#!/bin/bash 

echo entering_to_cshell 
csh 
echo in_cshell 
exit 
echo exited_from_cshell 

왜이 스크립트가 예상대로 실행되지 않습니까? entering_to_cshell 만 인쇄되고 cshell은 종료되지 않습니다.

csh 

를 사용하여

답변

2

당신은 당신의 스크립트가 실행되어 있지 않은 새로운 서브 쉘을 시작합니다. 그래서 다음 명령은 실행되지 않습니다. 스크립트는이 서브 쉘이 끝날 때까지 기다린다.

csh -c "echo in_cshell" 

당신이 당신의 스크립트에 의해 영향을받지 새로운 서브 쉘을 생성하지 않는이 방법을 사용해보십시오.

0

스크립트에서 간단히 csh을 호출하면 대화식 csh 하위 쉘이 시작됩니다. csh 세션을 종료하면 스크립트는 이어지는 에코와 종료를 계속 수행하고 exit에서 종료한다는 것을 알 수 있습니다.

bash 스크립트에서 일련의 명령을 csh으로 전달하려면 Here Document 구문을 사용하여 명령을 csh으로 리디렉션하는 것이 좋습니다. EOF를 항목 사이

#!/bin/bash 

echo entering_to_cshell 

csh <<EOF 
echo in_cshell 
exit 
EOF 

echo exited_from_cshell 

선은 csh에 의해 해석되는 스크립트로 처리됩니다.