Bashスクリプトのソースコードとその内容を印刷します。

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"

答え1

次のことを試すことができますawk

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

したがって、で始まるすべての行は、source fnameファイルの内容がある場合はその内容に置き換える必要があります。

答え2

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

答え3

スクリプトの実行も問題ない場合は、ソースコードとその内容を表示する簡単な方法は次のとおりです。

bash -v foo.sh

答え4

独自のソースコードを出力するプログラムを呼び出します。クイーン。たくさんありますが、実際に開発するのは驚くほど直感的ではありません。ほとんどのオンライン例には何も含まれていません。単純なbashバージョンを見つけることができますここ:

#!/bin/bash
q=(
'#!/bin/bash'
'q=('
')'
'printf "%s\n" "${q[@]:0:2}"'
'printf "\047%s\047\n" "${q[@]}"'
'printf "%s\n" "${q[@]:2}"'
)
printf "%s\n" "${q[@]:0:2}"
printf "\047%s\047\n" "${q[@]}"
printf "%s\n" "${q[@]:2}"

Quinineは、ほとんどすべてのプログラミング言語で見つかります。クイーンチェーン(ソースコードを出力する他の言語でソースコードを出力)もあります。このクイーン128の言語で構成された長いチェーンです。

関連情報