如何重用rostopic的完成函数来完成自定义bash函数?

时间:2018-02-22 04:05:45

标签: ros bash-completion

定义的bash函数rte()

$ function rte(){ rostopic echo $@ ; };

并尝试使用rostopic的完成功能

$ complete -p rostopic
complete -F _roscomplete_rostopic rostopic

通过命令:

$ complete -F _roscomplete_rostopic rte

以上设置可以验证如下:

$ complete -p rte
complete -F _roscomplete_rostopic rte

但是,rte <partial input><tab>不提供完成次数。

问题:如何让rte()使用rostopic完成?我想当rte()的完成时调用rostopic完成后,需要向echo完成提供上下文rostopic (即COMP_WORDS需要包含echo)。

1 个答案:

答案 0 :(得分:0)

找出解决方案 - 现在.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;
}