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

How to reuse rostopic's completion function for completing a custom bash function?

定义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).

想出了一个解决方案 -- 现在 .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;
}