使用现有完成功能进行多级Bash完成?

问题描述

| 我创建了一个简单的bash函数:http://shr.im/ionyse-notify 我想添加一些完成文件。 我发现了两个有趣的功能: _kNown_hosts _user_at_host 我该怎么说,第一个参数应使用_kNown_hosts完成,第二个参数应使用_user_at_host
#!/bin/bash

_send-msg_complete()
{
  local cur prev

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  if [ $COMP_CWORD -eq 1 ]; then
      COMPREPLY=( $(compgen -F _kNown_hosts -- $cur) )
  elif [ $COMP_CWORD -eq 2 ]; then
      COMPREPLY=( $(compgen -F _user_at_host -- $cur) )
  fi

  return 0
} &&

complete -F _send-msg_complete send-msg
这是我所拥有的,但是不起作用。怎么了 ?     

解决方法

实际上,这很简单:
#!/bin/bash

_send-msg_complete()
{
  local cur prev

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  if [ $COMP_CWORD -eq 1 ]; then
      _known_hosts
  elif [ $COMP_CWORD -eq 2 ]; then
      _user_at_host
  fi

  return 0
} &&

complete -F _send-msg_complete send-msg