У меня есть основная полная функция:Bash: Разрешить флаги раз
_my_complete()
{
local cur prev opts opts2;
COMPREPLY=();
cur="${COMP_WORDS[COMP_CWORD]}";
prev="${COMP_WORDS[COMP_CWORD-1]}";
opts="foo bar";
opts2="-f -s";
case ${COMP_CWORD} in
1)
COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
;;
2 | 4)
COMPREPLY=($(compgen -W "${opts2}" -- ${cur}))
;;
esac
}
Как ограничить завершение, чтобы принять -f или -s только один раз в командной строке?
Thanks
Как вы знаете, все аргументы в '$ {COMP_WORDS [@]}', так что вы можете просто проверить, если '' -f' или -s' уже массив. – pynexj
Да, но как и где я проверяю его и редактирую 'opts2'? –