결국 다른 bash 스크립트를 호출하는 bash 스크립트가 있습니다. 각 스크립트는 "source"로 실행해야합니다.소스로 실행중인 다른 스크립트의 소스로 bash 스크립트를 실행하려고 시도합니다.
source script2.sh
script2.sh :
export someVar=something
실행 모든 것에 :
source script1.sh arg1 arg2
단순화하기 위해, 나는
script1.sh 아래의 문제 점을 요약 한
고소가 script2.sh이 script1.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 --
를 사용하여 위치 매개 변수를 지울 수 있습니다
이러한 인수가 더 이상 필요하지 않으면'script2'를 소싱하기 전에'script1'에서'shift 2 '를 호출 할 수 있습니다. –