bash完成带有-o文件名的额外反斜杠

时间:2019-05-21 14:40:03

标签: bash bash-completion docopt infi.docopt-completion

我正在尝试创建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-completion的方式直接从docopt生成bash补全。然后在其中添加-o filenames

谢谢

0 个答案:

没有答案