쉘 스크립트 빌드 시스템

쉘 스크립트 빌드 시스템

내 직장에는 서버 팜에서 실행되는 Oracle 데이터베이스를 나열하는 Bash 스크립트가 있습니다. 인라인 Python 코드(예: )를 사용하여 약간 수정했습니다 python -c "import sys...".

많이 성장했기 때문에 스크립트를 사용하는 빌드 시스템을 고려하게 되었습니다. 이상적으로는 빌드 시스템을 사용하면 Python 코드를 별도의 파일에 작성한 다음 이를 모두 하나의 통합 스크립트에 넣을 수 있습니다. 통합 스크립트는 배포 프로세스를 단순화하는 데 도움이 됩니다.

또한 빌드 시스템은 스크립트 크기를 줄이기 위해 모든 주석을 제거해야 하지만 이것이 아마도 가장 쉬운 부분일 것입니다.

그렇지 않다면 시간을 내서 직접 작성하겠습니다. 범용 빌드 도구(언어에 구애받지 않음)가 있더라도 이를 사용하고 싶다고 생각하고 있습니다.

답변1

이 질문에 대답하는 것이 잘못된 것 같지만 다음과 같이 할 수 있습니다.

요점은 Makefile이 작업에 적합한 도구이며 여기서 문자열 구문을 사용하여 쉘 이스케이프를 제거할 수 있다는 것입니다.

기본 script.sh

# some script...

xargs -0 python -c <<'PYTHON_SCRIPT_asdlfkjhsldjkhf'
PYTHON_SCRIPT_asdlfkjhsldjkhf

# more script ...

파일 생성

merged_script.sh: base_script.sh python_script.py
    { sed -ne '0,/PYTHON_SCRIPT_/p' base_script.sh; \
      sed -e SOME_REGEX_TO_STRIP_COMMENTS python_script.py; \
      sed -ne '/^PYTHON_SCRIPT_/,999999999p' base_script.sh; \
    } > merged_script.sh

기본적으로 셸 스크립트의 전반부를 가져온 다음 Python 스크립트를 연결하고 스크립트의 후반부를 추가합니다. Python 스크립트는 여기 문자열에 배치되므로 쉘 이스케이프에 대해 걱정할 필요가 없습니다. 문자열이 Python 코드에 나타나지 않는지 확인해야 하지만 이는 실제 문제가 되지 않습니다. 또한 Python 스크립트를 최대 인수 제한보다 짧게 만들어야 하지만 이미 해당 문제가 있습니다.

파이썬 주석을 제거하기 위해 정규식을 작성하는 것은 연습으로 남겨 둡니다.

스크립트의 위쪽과 아래쪽 부분을 잡기 위한 sed 명령은 엉성하며 파일을 연결하기 위해 다른 실용적인 스크립트로 대체될 수 있습니다. 나는 그것을 파이썬으로 작성하는 것을 추천합니다. 왜냐하면 그것이 당신이 좋아하는 것이기 때문입니다.

관련 정보