首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个脚本中实现多个自动完成功能

在一个脚本中实现多个自动完成功能
EN

Stack Overflow用户
提问于 2021-07-30 09:58:22
回答 1查看 35关注 0票数 0

当我想要为位置参数和标志(-a/--analysis)启用自动完成时,我有一个命令pyseqtools.py。我可以在单独的自动完成脚本中使用以下几行代码分别自动完成它们中的任何一个:

代码语言:javascript
复制
stat_list="mageck bagel2"

function analysis()
{
case $3 in
    -a) COMPREPLY=($(compgen -W "$stat_list" "${COMP_WORDS[$COMP_CWORD]}"));;
    --analysis) COMPREPLY=($(compgen -W "$stat_list" "${COMP_WORDS[$COMP_CWORD]}"));;
esac
}

complete -F analysis pyseqtools.py

代码语言:javascript
复制
module()
{
    local opts
    opts="crispr rna-seq chip-seq cutrun"
    case $COMP_CWORD in
        1)
            COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") )
            ;;

    esac
    return 0
}

complete -F module pyseqtools.py 

当我将所有代码放在一个自动完成脚本中时,只有文件底部的代码块可以正常工作。我怎样才能让它们在一个脚本中都能工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-07 09:48:45

我通过将这两个函数合并为一个函数来使其工作:

代码语言:javascript
复制
stat_list="mageck bagel2"

function _complete()
{
case $3 in
    -a) COMPREPLY=($(compgen -W "$stat_list" "${COMP_WORDS[$COMP_CWORD]}"));;
    --analysis) COMPREPLY=($(compgen -W "$stat_list" "${COMP_WORDS[$COMP_CWORD]}"));;
esac

    local opts
    opts="crispr rna-seq chip-seq cutrun"
    case $COMP_CWORD in
        1)
            COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") )
            ;;

    esac
    return 0

}

complete -F _complete pyseqtools.py
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68589042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档