私はunixの初心者です。次のように、関数をUNIX変数に割り当てる方法があるかどうか疑問に思っています。
temp=funcname(){echo 'I am in function'};
$temp; // prints I am in function.
私にお知らせください。
関数は、UNIX シェルでは第一級ではありません。ただし、関数の名前をシェル変数に格納して呼び出すことができます。
funcname_foo() {
echo "I am a function"
}
temp=funcname_foo
"$temp"
つまり、条件付きで別の関数を指したい場合は、条件付きで簡単に定義できます。
if [ "$foo" = bar ] ; then
funcname() { echo "Function A"; }
else
funcname() { echo "Function B"; }
fi
funcname # actually call the function
を使用して、変数のテキストを使用して関数を定義することがeval
できます。ただし、これはエラーが発生しやすく、ベスト プラクティスに反するため、通常は実行しないでください。
実際のユースケースを説明した場合、目的の結果を達成するための正しい方法のより良い例が可能になるはずです.
いいえ。従来の *nix シェルでは、関数は一流ではありません。
たとえば、bash シェルで関数を使用します。
function manhtm { man -R=ASCII $1 | rman -f HTML > ~/tmp/$1-man.html && firefox ~/tmp/$1-man.html;}
function rff { sudo rfcomm connect $1;}