Multi Level Bash Завершение с использованием существующих функций завершения? - PullRequest
1 голос
/ 13 апреля 2011

Я создал простую функцию 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

Вот чтоУ меня есть, но это не работает.Что не так?

1 Ответ

0 голосов
/ 13 апреля 2011

На самом деле, это довольно просто:

#!/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
...