2014-04-07 2 views
2

결국 다른 bash 스크립트를 호출하는 bash 스크립트가 있습니다. 각 스크립트는 "source"로 실행해야합니다.소스로 실행중인 다른 스크립트의 소스로 bash 스크립트를 실행하려고 시도합니다.

source script2.sh 

script2.sh :

export someVar=something 

실행 모든 것에 :

source script1.sh arg1 arg2 
단순화하기 위해, 나는

script1.sh 아래의 문제 점을 요약 한

고소가 script2.shscript1.sh에서 실행되는 경우이며, 인수도 복사, 그래서 script2.sh은 실제로 실행 :

source script2.sh arg1 arg2 

script2.sh을 그 인수하기 때문에 실패 제공된다. Script2를 통과하지 않고 script2를 실행할 수있는 방법이 있습니까? args? 소스 명령없이 script2를 실행하는 것은 옵션이 실행되지 않고 변수가 지속되도록하지 않는 한 옵션이 아닙니다. 나는 또한 어떤 식 으로든 script2를 수정할 수 없습니다.

script1.sh :

echo "Number of parameters before: $#" 
set -- 
echo "Number of parameters after : $#" 
source script2.sh 

script2.sh :

echo "script2.sh received $# parameters" 

당신이 그들과 함께 할 때 당신은 set --를 사용하여 위치 매개 변수를 지울 수 있습니다

+0

이러한 인수가 더 이상 필요하지 않으면'script2'를 소싱하기 전에'script1'에서'shift 2 '를 호출 할 수 있습니다. –

답변

2

지금 script1.sh foo bar

을 인쇄합니다.
Number of parameters before: 2 
Number of parameters after : 0 
script2.sh received 0 parameters 
+0

고마워요! 그게 해결 됐어! – Robb

관련 문제