由于这是非常常见的情况,因此我想以一种更快的方式来确保所提供的参数数量正确。我想要这样的东西:
ensure_n_args () {
if (( $1 != $2 )); then
printf "Function %s wants %d parameters, got %d" $funcstack[2] $1 $2
return -1
fi
}
我现在可以使用以下方式拨打电话:
ensure_n_args 1 $# || return $?
但是,这仍然有点冗长,是否可以构造一个别名以便我可以写
ensure_n_args_inline 1
并获得相同的结果?即也使用别名从函数中退出。 问题是我需要在参数后添加return语句:
# Prints, but does not return
alias ensure_n_args_inline='ensure_n_args $#'
# Wrong #n of arguments, because the 1 ends up after the return statement, but would theoretically return
alias ensure_n_args_inline='ensure_n_args $# || return $?'