2013-07-16 1 views
0

를 사용하여 CSH 스크립트 ksh 스크립트에서 선언 된 변수에 액세스 할 수 없습니다, 내가 예를 들어 다른 C 쉘 스크립트에서 콘 셸 (KSH) 스크립트에서 선언 된 변수에 액세스 할 수 없습니다입니다 쉘 스크립트

vi script.ksh 
set MyUser=root 
set MyPassword=shroot 
exit 

vi script.csh 
. /script1.ksh 
echo $MyUser 
echo $MyPassword 
exit 

여기에 관련된 문제 script2.csh의 script1 .ksh에서 변수 MyUser 및 MyPassword에 액세스 할 수 없습니다.

이 경우 제안 해 주실 수 있습니까?

+1

한 쉘에서 스크립트를 '소스'로 만들 수 없으며 cmds를 다른 쉘의 구문으로 실행하게 할 수 없습니다. 귀하의 예제는 두 쉘의 구문 사이에 큰 차이가 있습니다. 'source envFile'은 실제로'csh'에서 할 수있는 최선의 방법입니다. 그리고 ksh에서 어떤 이슈,'. ksh'에서 csh'set var = value' (공백에주의하십시오)를 사용할 수 없습니다. 행운을 빕니다. – shellter

답변

0

ksh에 의해 ksh 스크립트에서 수행중인 작업을 수행하지 않습니다. $1을 먼저 MyUser=root으로 설정하고 MyPassword=shroot으로 설정합니다.

그러나 구문이 C 쉘 (tcsh)과 호환되므로 C 쉘 스크립트에서 소스를 가져올 때 두 변수를 설정하게됩니다. Bourne-shell 파생물에서 스크립트를 생성 한 경우 ksh 스크립트의 끝에있는 exit은 쉘을 종료하게됩니다. C 셸이 exit이되지 않는 것 같습니다.

그래서, 당신이 가진 것은 이상한 하이브리드입니다. 일반적으로 한 언어 만 사용하고 독점적으로 사용합니다. 다른 쉘을 사용해야하는 경우 그렇게 할 수 있지만 다른 쉘에 대해 작성된 스크립트를 실행하기 만하면됩니다. 환경 변수를 사용하여 다른 스크립트와 통신 할 수 있습니다. 일반적으로 C 쉘 Bourne 쉘 유도체에서 사용할 수있는 소스 코드를 작성하지 마십시오. 다른 구문이 너무 많습니다.

관련 문제