명령 줄 플래그와 적절한 플래그 값을 제안하는 배시 완료 루틴을 생성하려고합니다. 예를 들어 아래 fstcompose 명령의 경우, 먼저 경쟁 루틴에 compose_filter = 플래그를 제안한 다음 [alt_sequence, auto, match, sequence]에서 가능한 값을 제안하십시오. 나는 경쟁이 경로 나 파일이 제안의 기본 모드로 후퇴 할 값의 관련된 세트가없는 모든 플래그를 들어등호 부호와 열거 형 플래그 값을 가진 Bash 완료
fstcompose --compose_filter=
.
제가 직면 한 한 가지 문제는 = 등호가 개별 토큰으로 취급되며 이전 COMP_WORD로 설정됩니다. 이전 = 문자를 포함하기 전에 전체 플래그를 탐지하는 기술이 있습니까? 또는이 유형의 플래그를 열거 형 값으로 구현하는 더 좋은 방법이 있습니까? 아래는 내가 작업하고있는 완료 루틴의 샘플이다.
_fstcompose()
{
local cur prev opts filters pprev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="--compose_filter= --connect"
filters="alt_sequence auto match sequence"
if [[ ${cur} == -* ]] ; then
COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
return 0
fi
if [[ ${prev} == "--compose_filter=" ]] ; then
COMPREPLY=($(compgen -W "${filters}" -- ${cur}))
return 0
fi
_filedir
}
complete -o nospace -F _fstcompose fstcompose
= COMP_WORDBREAKS에서 제거 = 전혀 작동하지 않습니다. – bioinfornatics