本文介绍了如何重用 rostopic 的完成功能来完成自定义 bash 功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
定义的bash函数rte()
:
$ function rte(){ rostopic echo $@ ; };
并尝试使用rostopic
的补全功能
$ complete -p rostopic
complete -F _roscomplete_rostopic rostopic
通过命令:
$ complete -F _roscomplete_rostopic rte
以上设置可以验证如下:
The above setting can be verified as follows:
$ complete -p rte
complete -F _roscomplete_rostopic rte
但是,rte
不提供补全.
问题:如何让 rte()
使用 rostopic
的补全?我猜当 rte()
的完成调用 rostopic
的完成时,上下文 echo
需要提供给 rostopic
的补全(即 COMP_WORDS
需要包含 echo
).
Question: How to get rte()
to use rostopic
's completion? I guess when rte()
's completion calls rostopic
's completion, the context echo
needs to be provided to rostopic
's completion (i.e., COMP_WORDS
needs to contain echo
).
推荐答案
想出了一个解决方案 -- 现在在 .bashrc
中有以下内容:
Figured out a solution -- now have the following in .bashrc
:
function rte(){ rostopic echo "$@" ; };
complete -F _mycomplete_ rte
function _mycomplete_()
{
local fragment=${COMP_WORDS[COMP_CWORD]}
COMP_CWORD=2
COMP_WORDS[0]="rostopic"
COMP_WORDS[1]="echo"
COMP_WORDS[2]=$fragment
COMP_LINE="rostopic echo $fragment"
_roscomplete_rostopic;
}
这篇关于如何重用 rostopic 的完成功能来完成自定义 bash 功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!