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の言語で構成された長いチェーンです。