如何将函数名称传递给测试运行程序?

如何将函数名称传递给测试运行程序?

我想编写自己的测试运行程序:

do_test () {
  function_under_test=$1
  expected="$2"
  function_under_test $3  # <-- Line 32
  if [ $result -eq $expected ]; then
    printf '.'
  else
    printf 'F'
  fi
}

这样我就可以用它来调用它

do_test sum_squares 385 10

然后它会使用

sum_squares () {
  result=0
  num_in=$1
  for each_num in `seq $num_in`
  do
    result=$((result+(each_num*each_num)))
  done
}

但我已经到了function_under_test: not found第 32 行

答案1

当您键入 时function_under_test,shell 认为它是命令,而不是变量。您需要扩展它,因此function_uneder_test将扩展为sum_squares.

将第 32 行更改为:

"$function_under_test" "$3"

相关内容