Bash 从文本文件中提取shell脚本自动完成选项

Bash 从文本文件中提取shell脚本自动完成选项,bash,shell,autocomplete,Bash,Shell,Autocomplete,我有一个程序,可以查找包含主机名和电话号码的文件。当主机名作为唯一的sys arg输入时,程序打开minicom并拨入它(在做了一些其他事情之后)。我要做的是设置我的脚本,这样我可以自动完成sys arg作为文件中包含的任何可能的主机名。我见过其他类似的项目,但并不完全适合我正在尝试的工作,而且还没有让它们发挥作用 源文件示例: 主机名5555 主机名5555 主机名5555 等等。。123次以上这是您的函数的工作版本-只需更正$contents的值: _UseGetOpt-2 () { loc

我有一个程序,可以查找包含主机名和电话号码的文件。当主机名作为唯一的sys arg输入时,程序打开minicom并拨入它(在做了一些其他事情之后)。我要做的是设置我的脚本,这样我可以自动完成sys arg作为文件中包含的任何可能的主机名。我见过其他类似的项目,但并不完全适合我正在尝试的工作,而且还没有让它们发挥作用

源文件示例:

主机名5555

主机名5555

主机名5555


等等。。123次以上

这是您的函数的工作版本-只需更正
$contents
的值:

_UseGetOpt-2 () { local cur contents=$(sed 's/\(.*\) .*/-\1/' dialhosts)
COMPREPLY=() # Array variable storing the possible completions.
cur=${COMP_WORDS[COMP_CWORD]}
case "$cur" in -*) COMPREPLY=( $( compgen -W '$contents' -- $cur ) );;
esac
return 0
}
用命令激活它

complete -F _UseGetOpt-2 UseGetOpt-2.sh

我已经尝试了上面描述的方法。我对这个问题进行了编辑,因为评论的格式并不正确,具体是哪种方法?让我们看看你的尝试。您看过
complete
builtin?shell脚本的文档了吗:_UseGetOpt-2(){local cur contents=$(cat dialhosts)COMPREPLY=()#存储可能的补全的数组变量。cur=${COMP_WORDS[COMP_cwords]}case“$cur in-*)COMPREPLY=($(compgen-W'$contents'-$cur));esac return 0}作为拨号程序外壳脚本的第一行:complete-F _UseGetOpt-2-o dialhosts./UseGetOpt-2.shive查看了完整的内置代码。当我尝试使用-W完成时,它只显示帮助菜单您是如何尝试使用
-W
?你有没有给
-W
一个单词表?你是如何创建这个wordlist参数的?你看了
-C
还是
-F