compgen: Fall ignorieren

9

Ich versuche, eine benutzerdefinierte Bash-Vervollständigung wie hier beschrieben zu implementieren . Allerdings scheint es , dass compgenist case-sensitive . Gibt es eine Möglichkeit, in diesem Zusammenhang die Groß- und Kleinschreibung nicht zu berücksichtigen?

Pierre
quelle

Antworten:

5

Ich würde das Beispiel von dem Link, den Sie erwähnt haben, in etwa so ändern:

_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

Weitere Informationen finden Sie in der Bash-Dokumentation oder auf der Bash-Hacker-Website .

Rajish
quelle
Dies hängt jedoch von der Tatsache ab, dass optsalles in Kleinbuchstaben geschrieben ist. Wenn es so wäre --help --verbose --VERSION, könnte es den dritten Fall niemals abschließen.
Enrico Maria De Angelis