Bash 매뉴얼 페이지에는 쉘 기능을 완료하는 데 사용할 수 있는 인수가 설명되어 있습니다.
쉘 함수가 호출되면 COMP_WORDS 및 COMP_CWORD 변수도 설정됩니다.
현재 단어와 이전 단어를 식별하기 위해 이러한 매개변수를 사용하는 것이 일반적인 관용구인 것 같습니다.
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
그러나 그 문서는 계속해서 이렇게 말합니다.
함수나 명령이 호출될 때 첫 번째 인수는 인수가 완성되는 명령의 이름이고, 두 번째 인수는 완성되는 단어이며, 세 번째 인수는 현재 명령줄에서 완성되는 단어 앞의 단어입니다.
따라서 위의 코드는 다음과 같이 대체될 수 있습니다.
cur=$2
prev=$3
나는 "야생에서" 이러한 사용법의 예를 본 적이 없습니다. 왜 그런 겁니까? 사람들은 이러한 매개변수가 이미 사용 가능하다는 사실을 인식하지 못하는 걸까요, 아니면 이 매개변수에 의존하지 말아야 할 설득력 있는 이유가 있는 걸까요?
bash 완성 프로젝트에서 보다 세분화된 완성 메커니즘이 제공된다는 것을 깨달았습니다(v1, v2), 따라서 이전 예제 중 어느 것도 고급 사용 사례에 이상적이지는 않지만 간단한 사용 사례의 경우 위치 매개변수를 즉시 사용할 수 있는데 왜 누구도 이를 사용하지 않습니까?