2013-06-13 3 views
0

sh 쉘에서 스크립트를 만들었습니다.인수 변수 설정 해제

#script.sh 
echo $1 

if [ x$1 = 'x' ] 
then 
echo CODE1 
else 
echo CODE2 
fi 

1) 내가 다시 다음 . ./script.sh 사용 후 내가 그것을 실행하면 . ./script.sh arg1

OUTPUT: arg1 
CODE2 

3)처럼 실행하는 경우)

2 . ./script.sh

OUTPUT: CODE1 
사용하여 실행하고있는 경우 그것은 나를 준다

OUTPUT: arg1 
CODE2 

3 번째 쉘은 동일한 셸에서 3 번째로 실행되고 있으므로 $ 1은 할당 해제되지 않고 3 번째는 actully가 2 번째로 설정된 $ 1 값을 사용하기 때문에 제 3의 출력이 2 번째와 같다고 생각합니다.

하지만 unset 1을 사용하여 할당을 해제하면 쉘에서 알 수없는 식별자로 오류가 발생합니다.

어떻게이 환경 변수 $ 1을 (를) 할당 해제 할 수 있습니까? 또는 어떻게 null로 설정할 수 있습니다.

답변

0

셸을 .으로 소싱하면 현재 셸의 컨텍스트에서 실행됩니다. 방금 그렇게하지 않으면 다음 문제가 발생하지 않습니다.

$ ./script.sh 

CODE1 
$ ./script.sh arg1 
arg1 
CODE2 
$ ./script.sh 

CODE1 
+0

당신이 맞습니다. 하지만 현재 셸에서 스크립트를 실행하고 싶습니다. 그 이유는 변수를 할당 취소하려는 이유입니다. –

+0

흠, 괜찮아. 나는 당신이하는 행동을 보지 못합니다. 이런 식으로 행동하는 쉘은 어떤 것을 사용합니까? –