具有返回参数的Zsh别名

时间:2018-11-27 09:03:53

标签: shell zsh

由于这是非常常见的情况,因此我想以一种更快的方式来确保所提供的参数数量正确。我想要这样的东西:

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 $?'

0 个答案:

没有答案