인수가 --arg=argval 형식을 취하는 경우 bash 완료 함수를 작성할 수 있습니까?

인수가 --arg=argval 형식을 취하는 경우 bash 완료 함수를 작성할 수 있습니까?

인수에 공백이 없을 때 bash 완료를 작성하는 방법( = 예: myapp은 --arg=argVal1또는--arg=argVal2

_myapp_completion() {
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--arg1 --arg2 --arg3" # List of valid options for your application

    case "${prev}" in
        --arg1)
            # If previous word is --arg1, complete the values
            COMPREPLY=($(compgen -W "value1 value2 value3" -- "${cur}"))
            if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
                # If only one completion option, remove space after --arg1=
                COMPREPLY=(${COMPREPLY[@]/#/${prev}=})
            fi
            return 0
            ;;
        *)
            # Default completion logic for other arguments
            COMPREPLY=($(compgen -W "${opts}" -- "${cur}"))
            return 0
            ;;
    esac
}

complete -F _myapp_completion ./myapp

위의 예에서는 myapp공백 없이 후자를 사용합니다.value1 value2 value3--arg1=

관련 정보