Bash-Completion与" ::"参数中的特殊字符不起作用

时间:2018-05-01 08:06:37

标签: bash bash-completion

无法弄清楚,如何使用包含" ::"的参数来完成bash-completion工作像那样,因为compgen或者完全把每个条目作为单独的单词,我猜。

cmd=./my_script
_my_options()
{
  local cur prev opts
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}
  opts="NAMESPACE::param1 NAMESPACE::param2 NAMESPACE::param3 NAMESPACE2::param1 NAMESPACE2::param2"
  COMPREPLY=( $(compgen -W '$opts' -- $cur ) );
}
complete -F _my_options $cmd

Bash-Completion在这里停止工作..

$ ./my_script <TAB>
$ ./my_script NAMESPACE
NAMESPACE2::param1  NAMESPACE::param1   NAMESPACE::param3
NAMESPACE2::param2  NAMESPACE::param2   

1. $ ./my_script NAMESPACE    <TAB> or <TAB><TAB> -> no effect
2. $ ./my_script NAMESPACE:   <TAB> or <TAB><TAB> -> no effect
3. $ ./my_script NAMESPACE::  <TAB> or <TAB><TAB> -> no effect
4. $ ./my_script NAMESPACE::p <TAB> or <TAB><TAB> -> no effect

COMP_WORDSNAMESPACE::param1,而不只是一个字符串NAMESPACE::param1

使用引号自动完成功能正常,但我不想传递这些引号。

5. $ ./my_script "<TAB>
   $ ./my_script "NAMESPACE
   $ ./my_script "NAMESPACE:<TAB>
   $ ./my_script "NAMESPACE::param
   $ ./my_script "NAMESPACE::param1"

0 个答案:

没有答案