завершение bash дополнительная обратная косая черта с именами -o - PullRequest
0 голосов
/ 21 мая 2019

Я экспериментирую со странным поведением, пытаясь создать файл завершения bash. В основном это выглядит так:

_foo()
{
    local cur prev

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

    case ${COMP_CWORD} in
        1)
            COMPREPLY=($(compgen -W "configure show" -- ${cur}))
            ;;
        2)
            case ${prev} in
                configure)
                    COMPREPLY=($(compgen -W "CM DSP NPU" -- ${cur}))
                    ;;
                show)
                    COMPREPLY=($(compgen -fW '--some= --other=' -- $cur))
                    ;;
            esac
            ;;
        *)
            COMPREPLY=()
            ;;
    esac
}

complete -o filenames -F _foo foo

При тестировании foo show --so + клавиша Tab.

Я получаю:
foo show --some\=
Дополнительная обратная косая черта добавляется между --some и =.
Почему это поведение появляется?

Также, если я удалю -o filenames, он будет работать правильно.
Почему -o filenames вызывает такое поведение?

Кстати, я использую infi.docopt-complete для генерации завершения bash напрямую из docopt. И они добавляют -o filenames внутри него.

Спасибо

...