![Bash는 자체 compgen 접두사를 완성합니다.](https://linux55.com/image/158825/Bash%EB%8A%94%20%EC%9E%90%EC%B2%B4%20compgen%20%EC%A0%91%EB%91%90%EC%82%AC%EB%A5%BC%20%EC%99%84%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4..png)
기본적으로 내 (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