シェル — 変数を使って動的に関数を定義する


変数定義

function_name="some_func"

eval を使う

eval "function $function_name() { echo ok this is dynamic defined function; }"

別の書き方

eval function "$function_name"\(\) \{ echo ok this is dynamic defined 
 function\; \}

上の例は両方、次のように評価される

function some_func(){ echo ok this is dynamic defined function; }

$function_name だけがシェル的に変数展開されてから eval が実行される

実行例

$ some_func
ok this is dynamic defined function

Versions

  • bash-4.4
  • sh-3.2
  • GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)

Links