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.