Bash вложенных автозаполнения вызова вложенных функций - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь построить генератор для завершения bash, но мне нужно иметь возможность вызывать «вложенные» команды. Вот что у меня так далеко.

#!bash

_test()
{
  local cur prev

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

  case ${COMP_CWORD} in
    1)
      COMPREPLY=($(compgen -W "plain" -- ${cur}))
    ;;
    2)
      case ${prev} in
        plain)
          _plain
        ;;
        show)
          COMPREPLY=($(compgen -W "some other args" -- ${cur}))
        ;;
      esac
    ;;
    *)
      COMPREPLY=()
    ;;
  esac
}

_plain() {
  local cur prev

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

echo ${COMP_CWORD}
echo $cur
echo $prev
  case ${COMP_CWORD} in
    2)
      COMPREPLY=($(compgen -W "one two three" -- ${cur}))
    ;;
    3)
      case ${prev} in
        one)
          __one
        ;;
      esac
    ;;
    *)
      COMPREPLY=()
    ;;
  esac
}

__one() {
  echo "another"
}

complete -F _test test

включая выходные данные отладки. По некоторым причинам COMP_CWORD, cur и prev не обновляются при вызове функции __one. Каким образом я могу выполнить скрипт завершения вложенного bash, как этот?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...