インクルードを含むbashスクリプトのソースコードを印刷する

インクルードを含むbashスクリプトのソースコードを表示/表示/印刷する方法はありますか(別名「ソース」) “)?

例:

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に相当するものはありません。
  • " print "?

回答

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 

コメント

  • うまく機能しますが、' perlを使用できません。ちなみに、ありがとうございます。
  • put iv id = ” foo.shの5a1b1fce31 “>

を実行すると、無限ループが発生します:)

  • @EvgenyVereshchagin、非常に残酷です。 🙂
  • 回答

    スクリプトの実行も気にしない場合は、次の簡単な方法があります。ソースコードとそのインクルードが表示されている:

    bash -v foo.sh 

    コメント

    • このコマンドは、スクリプト、ソースのみが必要です、ありがとうございます。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です