Bash 스크립트에서 파일을 여러 번 가져오기

Bash 스크립트에서 파일을 여러 번 가져오기

나는 소프트웨어 제품군의 새로운 배포를 설치/구성하기 위한 일련의 작업을 완료하기 위해 별도의 기능으로 훌륭하게 모듈화되는 대규모 구성 스크립트(bash)를 가지고 있습니다.

우리는 전체 스크립트를 실행하지 않고 이러한 함수 중 일부를 호출하는 것이 유용하다는 것을 깨달았습니다. 스크립트가 특정 함수를 호출하는 매개변수를 허용하도록 할 수 있지만 스크립트가 1200줄 이상으로 늘어났기 때문에 가독성을 위해 상위 스크립트에서 실행될 하위 스크립트로 분할하겠습니다. 목표는 특정 콘텐츠를 재구성하기 위해 아래 첨자를 독립적으로 실행할 수 있다는 것입니다.

원래 형식에서 상위 스크립트(마법사라고 함)에는 스크립트가 실행되는 동안 함수에 의해 조작되는 여러 전역 변수가 있습니다. 스크립트를 분할하기 위해 모든 구성 값에 대한 영구 파일을 만들고 함수가 영구 파일의 키=값 쌍을 업데이트할 수 있도록 하는 함수를 만듭니다(또는 아직 존재하지 않는 경우 추가합니다).

좋아요, 그럼 진짜 질문입니다! 마법사는 상위 스크립트이고 하위 스크립트(하위 스크립트)는 호출 시 구성 값을 편집하거나 추가할 수 있으므로 마법사가 다음과 같이 마법사의 프로세스(필수)를 통해 지속된 파일을 여러 번 리소스할 수 있습니까? 소싱이 "상향"으로 흐르지 않을 것입니까)? 즉, 일부 소프트웨어를 구성하는 마법사 기능이 시작될 때마다 아래 첨자가 구성 값을 변경하는 경우 먼저 이 파일을 가져옵니다.

함수가 파일을 가져오기 때문에 일단 함수가 완료되면 범위(또는 bash에 있는 동등한 용어)를 벗어나게 된다고 가정합니다. 그래서 이거해서는 안 된다문제를 일으키고 있지만 확실하게 알고 싶습니다. 어떤 조언이라도 감사드립니다!

**편집: 명확히 하자면, 영구 파일을 사용하는 주된 이유(그리고 내가 그렇게 부르는 이유)는 첨자 중 하나가 개별적으로 호출될 때 해당 파일을 계속 사용할 수 있기를 원하기 때문입니다. 마법사가 전역 변수를 설정하지 않으면 독립적으로 실행할 때 환경에 대한 중요한 정보가 손실됩니다.

답변1

함수가 제대로 작동하려면 반드시 존재해야 하는 변수(들)을 선택하고 다음과 같이 사용하세요.

[ -z "$REQUIREDVARIABLE" ] && . persistent-file

또는

[ -z "$REQ1" ] || [ -z "$REQ2" ] || [ -z "$REQ3" ] && . persistent-file

이렇게 하면 소스 스크립트는 변수가 존재하는 경우에만 영구 파일을 읽습니다.아니요이미 환경에 있습니다("마법사" 스크립트에서 시작될 때 최신 상태를 유지합니다).


추신: 제 생각에는 휠을 다시 만드는 대신 Unix/Linux 패키징 도구를 사용하여 프로덕션 코드를 푸시해야 합니다. 제3자에게 배포하는 경우 지원하려는 모든 unix/linux 배포용으로 패키지하십시오. 특정 운영 체제 및 버전을 실행하는 가상 머신을 사용하여 소프트웨어 패키지를 구축합니다. 코드가 오픈 소스인 경우 개발자 중 한 명이 유용하거나 흥미롭다고 판단하면 다양한 배포판 등에서 자체 패키지나 포트를 유지 관리합니다.

관련 정보