하나의 쉘 스크립트 파일의 내용을 다른 쉘 스크립트 파일로 "병합"

하나의 쉘 스크립트 파일의 내용을 다른 쉘 스크립트 파일로 "병합"

lib.sh내 스크립트에 포함할 수 있는 상수 및 함수의 "라이브러리"를 갖습니다( script.sh).

. /myfolder/lib.sh
......

스크립트에 포함된 파일(예: ./myfolder/lib.sh로 대체된 파일 lib.sh)을 병합하는 방법이 있습니까?

답변1

사용 sed:

sed -i.bak '\|^\. /myfolder/lib\.sh| {
    r /myfolder/lib.sh
    d
}' script.sh

이 스크립트의 기능은 다음과 같습니다.

  • \|^\. /myfolder/lib\.sh| { ... }=> 중괄호로 시작하는 줄을 찾아 . /myfolder/lib.sh중괄호 안의 명령을 실행합니다.
  • r /myfolder/lib.sh=> 출력 내용/myfolder/lib.sh
  • d=> 행 삭제( . /myfolder/lib.sh)

물론 다른 행은 그대로 유지됩니다.

답변2

테스트되지 않음: GNU awk 사용

gawk -i inplace '
    $1 == "." {system("cat " $2); next}
    {print}
' script.sh

관련 정보