기본적으로 내 (bash가 아닌) 프로그램을 호출하고 출력을 로 설정하는 간단한 bash 완료 스크립트가 있습니다 COMREPLY
.
COMPREPLY=( $(my-program -- "${COMP_WORDS[@]}") )
일부 옵션은 쉼표로 구분된 값을 허용합니다. 마지막 항목만 처리하는 방법에 대한 제안이 있습니까? 사용자 입력을 가정하고 -v opt1,opt2,o<TAB><TAB>
내 프로그램이 이 시점에서 유효한 옵션이 opt3
또는 임을 발견했다고 가정해 보겠습니다 opt4
. 이 2개를 반환하고 TAB을 누르면 출력이 o
(전체 접두사가 사라짐)로 변경됩니다. opt1,opt2,opt3
합계를 반환하면 opt1,opt2,opt4
작동하지만 보기에는 좋지 않습니다.
가능한 해결책은 다음과 같은 작업을 수행하는 것입니다.Bash 완료 쉼표로 구분된 값, 즉 my-program
generate를 호출하고 접두사 가 붙을 [opt3, opt4]
단어 목록으로 전달합니다 . 하지만 이를 위해서는 bash 스크립트에서 일부 로직을 복제해야 합니다 . 예를 들어 더 좋은 방법이 있습니까?compgen
opt1,opt2,
my-program