Я экспериментирую со странным поведением, пытаясь создать файл завершения 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
внутри него.
Спасибо