쉘 스크립트 로더 가 내 솔루션입니다.
단일 스크립트를 참조하기 위해 여러 스크립트에서 여러 번 호출 할 수 있지만 스크립트를 한 번만로드하는 include ()라는 함수를 제공합니다. 이 함수는 전체 경로 또는 부분 경로를 허용 할 수 있습니다 (스크립트는 검색 경로에서 검색 됨). 무조건 스크립트를로드하는 load ()라는 비슷한 함수도 제공됩니다.
그것은 작동 배쉬 , KSH , PD KSH 및 zsh을 가진 그들 각각에 대해 최적화 된 스크립트; ash , dash , heirloom sh 등과 같이 원래 sh와 일반적으로 호환되는 다른 쉘 은 쉘이 제공 할 수있는 기능에 따라 기능을 자동으로 최적화하는 범용 스크립트를 통해 제공됩니다.
[향상된 예]
start.sh
이것은 선택적인 시작 스크립트입니다. 여기에 시작 방법을 배치하는 것은 편리하고 기본 스크립트에 배치 할 수 있습니다. 스크립트를 컴파일해야하는 경우에도이 스크립트가 필요하지 않습니다.
#!/bin/sh
# load loader.sh
. loader.sh
# include directories to search path
loader_addpath /usr/lib/sh deps source
# load main script
load main.sh
main.sh
include a.sh
include b.sh
echo '---- main.sh ----'
# remove loader from shellspace since
# we no longer need it
loader_finish
# main procedures go from here
# ...
금연 건강 증진 협회
include main.sh
include a.sh
include b.sh
echo '---- a.sh ----'
b.sh
include main.sh
include a.sh
include b.sh
echo '---- b.sh ----'
산출:
---- b.sh ----
---- a.sh ----
---- main.sh ----
가장 좋은 것은 스크립트를 기반으로 한 스크립트를 사용하여 사용 가능한 컴파일러로 단일 스크립트를 구성 할 수도 있습니다.
여기를 사용하는 프로젝트는 다음과 같습니다 http://sourceforge.net/p/playshell/code/ci/master/tree/ . 스크립트를 컴파일하거나 컴파일하지 않고 이식 가능하게 실행할 수 있습니다. 단일 스크립트를 생성하기위한 컴파일도 발생할 수 있으며 설치 중에 도움이됩니다.
또한 구현 스크립트의 작동 방식에 대한 간단한 아이디어를 원할 수도있는 보수적 인 당사자를 위해 더 간단한 프로토 타입을 만들었습니다. https://sourceforge.net/p/loader/code/ci/base/tree/loader-include-prototype .bash . 크기가 작으며 누구나 Bash 4.0 이상에서 실행하려는 코드를 원할 경우 기본 스크립트에 코드를 포함시킬 수 있으며 사용하지 않습니다 eval
.