A página man do Bash descreve os parâmetros que estão disponíveis para as funções do shell de conclusão:
If a shell function is being invoked, the COMP_WORDS and COMP_CWORD variables are also set.
O uso desses parâmetros para identificar a palavra atual e a palavra anterior parece ser um idioma comum:
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
Mas a documentação continua,
When the function or command is invoked, the first argument is the name of the command whose arguments are being completed, the second argument is the word being completed, and the third argument is the word preceding the word being completed on the current command line.
Assim, o código acima pode ser substituído por
cur=$2
prev=$3
Ainda não vi nenhum exemplo desse uso "em estado selvagem". Por que é que? As pessoas simplesmente não sabem que esses parâmetros já estão disponíveis ou há uma razão convincente para não confiar neles?
Eu percebo que mecanismos de conclusão com mais nuances estão disponíveis no projeto de conclusão do bash ( v1 , v2 ), portanto nenhum dos exemplos anteriores é ideal para casos de uso avançado, mas para os simples, os parâmetros posicionais funcionam fora da caixa, então por que ninguém os usa?
Tags bash autocomplete