3

私はunixの初心者です。次のように、関数をUNIX変数に割り当てる方法があるかどうか疑問に思っています。

temp=funcname(){echo 'I am in function'};

$temp; // prints I am in function.

私にお知らせください。

4

3 に答える 3

4

関数は、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できます。ただし、これはエラーが発生しやすく、ベスト プラクティスに反するため、通常は実行しないでください。

実際のユースケースを説明した場合、目的の結果を達成するための正しい方法のより良い例が可能になるはずです.

于 2012-06-25T23:09:18.717 に答える
1

いいえ。従来の *nix シェルでは、関数は一流ではありません。

于 2012-06-25T23:08:06.597 に答える
0

たとえば、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;}
于 2012-06-25T23:08:10.120 に答える