compgen: mengabaikan case


9

Saya mencoba menerapkan penyelesaian bash khusus seperti yang dijelaskan di sini . Namun, tampaknya bahwa compgenadalah case-sensitive . Apakah ada cara untuk mengubahnya tidak peka huruf besar-kecil dalam konteks itu?

Jawaban:


5

Saya akan memodifikasi contoh dari tautan yang Anda sebutkan menjadi sesuatu seperti ini:

_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

Untuk info lebih lanjut, lihat dokumentasi bash atau situs peretas bash .


Tapi ini bergantung pada fakta bahwa optssemua huruf kecil. Jika ya --help --verbose --VERSION, itu tidak akan pernah menyelesaikan kasus ketiga.
— Enrico Maria De Angelis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.