つまり、次のことを行います。
-bash$ function tt
{
echo $0;
}
-bash$ tt
$0
が返されます-bash
。しかし、呼び出された関数名(tt
この場合は関数名)はどうすればわかりますか?
答え1
bash
使用中機能名バルク:
tt() {
printf '%s\n' "$FUNCNAME"
}
いくつかのksh
実装では、次のようになります。
tt() { printf '%s\n' "$0"; }
存在するksh93
:
tt() { printf '%s\n' "${.sh.fun}"; }
上記の関数の内部ksh93d
を使用して関数名を取得することもできますが、関数を定義するにはフォームを使用する必要があり$0
ます。function name { ...; }
では配列をzsh
使用できますfuncstack
。
tt() { print -rl -- $funcstack[1]; }
または$0
内部機能。
存在するfish
:
function tt
printf '%s\n' "$_"
end
答え2
bashでは${FUNCNAME[0]}
。
答え3
function tt { echo ${FUNCNAME}; }
私のCentOS 6コンピュータでこれを実行します。