소개처럼: 만약 secondary.sh
있다면
functionX(){
...
}
자체 기능을 사용하여 다음과 같이 선언 했습니다 primary.sh
.source secondary.sh
# primary.sh content
source secondary.sh
functionA(){
...
}
functionB(){
...
}
내 이해에 따르면동등하다전자의 모든 소스 코드를 복사하여 후자에 붙여넣습니다. 그래서:
# primary.sh content
functionX(){
...
}
functionA(){
...
}
functionB(){
...
}
뭔가 잘못된 것이 있으면 바로잡아주세요.
또한 스크립트 파일은 현재 셸에서 실행되며 모든 변경 사항(예: 환경 변수)은 현재 셸에 영향을 미치고 반영됩니다. 나는 지금까지 괜찮습니다. 다시 한 번 잘못된 내용이 있으면 정정해 주시기 바랍니다.
이제 동일한 primary.sh
스크립트 파일이지만 시나리오가 다른 경우 - 다음과 같은 경우:
source ${SPECIFIC_PATH}/secondary.sh
functionA(){
...
}
functionB(){
...
}
startPrimary(){
...
SPECIFIC_PATH="/somepath"
...
}
source
최상위에 있지만 SPECIFIC_PATH
아직 실행되도록 정의되지 않았기 때문에 실패합니다 .
그러나 다음과 같이 변경되면:
functionA(){
...
}
functionB(){
...
}
startPrimary(){
...
SPECIFIC_PATH="/somepath"
...
source ${SPECIFIC_PATH}/secondary.sh
}
SPECIFIC_PATH
선언되었기 때문에 작동합니다 .그리고 source
필요에 따라 수행됩니다.
이 시나리오는 여기에서 다룹니다.굉장히 유사한:
하지만 – 작동합니까?
제가 이런 질문을 드리는 이유는 다음 사항이 걱정되기 때문입니다.
secondary.sh
함수가 선언되고 실제로 복사/붙여넣기된 경우 primary.sh
- In유닉스/리눅스 쉘 스크립트다른 함수 내에서 함수를 선언하는 것이 유효합니까? 내 요점을 이해하시기 바랍니다. 나는 다음과 같은 일이 일어나고 있다고 가정합니다.
functionA(){
...
}
functionB(){
...
}
startPrimary(){
...
SPECIFIC_PATH="/somepath"
...
functionX(){
...
}
}