포함 된 bash 스크립트의 소스 코드 인쇄

포함 된 bash 스크립트의 소스 코드를 보거나 표시 / 인쇄하는 방법이 있습니까 (일명 “sources “)?

예 :

sub.sh 파일

 function showMe(){ echo "INCLUDE" } 

main.sh 파일

#!/bin/bash source sub.sh showMe echo "OK" 

main.sh의 “인쇄물”은 다음과 같이 표시됩니다.

#!/bin/bash showMe(){ echo "INCLUDE" } showMe echo "OK" 

댓글

  • 소스 코드는 more/less/cat로 볼 수 있으며, 런타임에 -x 플래그를 사용할 수 있습니다 (예 : set -x). 인쇄 소스 코드와 포함 된 파일을 정적으로 인쇄하는 마법은 없습니다. C 언어의 경우 cpp에 해당하지 않습니다.
  • " 인쇄 " of main.sh?

답변

다음을 시도해 볼 수 있습니다. awk :

awk "/^source/ { while (getline l <$2 > 0) print l; close($2); next; } { print; }" main.sh 

따라서 source fname로 시작하는 각 줄은 파일이있는 경우

답변

perl -p0e "while(s/source\s+(\S+)/`cat $1`/e){}" foo.sh 

댓글

  • 잘 작동합니다 ..하지만 ' 펄을 사용할 수 없습니다. 감사합니다.
  • put echo "source foo.sh for the rescue" foo.sh에서 무한 루프가 발생합니다.)
  • @EvgenyVereshchagin, 당신은 매우 잔인합니다! 🙂

답변

스크립트를 실행해도 괜찮다면 다음과 같은 간단한 방법이 있습니다. 소스 코드 및 포함 내용이 표시되도록합니다.

bash -v foo.sh 

주석

  • 이 명령은 원본 만 있으면됩니다. 감사합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다