compgen: игнорирование регистра


9

Я пытаюсь реализовать пользовательское завершение bash, как описано здесь . Тем не менее, кажется , что compgenэто чувствительно к регистру . Есть ли способ превратить это без учета регистра в этом контексте?

Ответы:


5

Я бы изменил пример из ссылки, которую вы упомянули, примерно так:

_foo() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD],,}"     # this downcases the result
    prev="${COMP_WORDS[COMP_CWORD-1],,}"  # here too
    opts="--help --verbose --version"

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _foo foo

Для получения дополнительной информации обратитесь к документации bash или сайту bash hackers .


Но это зависит от того, что optsвсе строчные. Если бы это было так --help --verbose --VERSION, он никогда не смог бы завершить третий случай.
Энрико Мария Де Анжелис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.