0
アサーションのログを生成するために現在実行中の関数名を抽出しようとしています。ここに私が試したものがありますshの関数名
function_name()
{
s=${FUNCNAME[0]}
touch ${s}
}
私は$ {FUNCNAME [0]}はshにないbashでしか動作しないと思います。
それを行うためのshで現在実行中の関数名を取得する方法はあり
アサーションのログを生成するために現在実行中の関数名を抽出しようとしています。ここに私が試したものがありますshの関数名
function_name()
{
s=${FUNCNAME[0]}
touch ${s}
}
私は$ {FUNCNAME [0]}はshにないbashでしか動作しないと思います。
それを行うためのshで現在実行中の関数名を取得する方法はあり
一つの方法は、すべての機能に手動でログ式を挿入することがあることは面倒だが、それは、awkので自動化することができます。
はあなたが質問に使用されるコーディング規則に従うと仮定します
#!/usr/bin/awk
/^[ \t]*function[ \t]*[a-zA-Z_][^(]*\(\)/ {
name=$0
sub(/^[ \t]*function[ \t]*/, "", name)
sub(/[ \t]*\(\).*/, "", name)
if ($0 !~ /\{/) {
print
getline
}
print
print " s='" name "'"
print " touch ${s}"
next
}
1
コードがshスクリプト内の各機能のために、自明である、それは関数名を解析し、以下のロギングコードを挿入します。上記のコードの最後の行に注意してください。これは、他のすべての行を表示することを意味します。
私が知る限り、これはPOSIXシェルからは得られないものです。 – chepner
awkを使ってshスクリプトを前処理して、関数を解析してロギング式を挿入することができます。 – pdg