一个脚本中的多个自动完成功能
Multiple auto-completion functions in one script
我有一个命令 pyseqtools.py
,我想为位置参数和标志启用自动完成 (-a/--analysis
)。我可以在单独的自动完成脚本中使用这些代码行分别自动完成其中任何一个:
stat_list="mageck bagel2"
function analysis()
{
case 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
和
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
当我将所有代码放在一个自动完成脚本中时,只有文件底部的代码块在工作。我怎样才能让它们在一个脚本中工作?
我通过将两个功能合二为一来实现它:
stat_list="mageck bagel2"
function _complete()
{
case 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
我有一个命令 pyseqtools.py
,我想为位置参数和标志启用自动完成 (-a/--analysis
)。我可以在单独的自动完成脚本中使用这些代码行分别自动完成其中任何一个:
stat_list="mageck bagel2"
function analysis()
{
case 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
和
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
当我将所有代码放在一个自动完成脚本中时,只有文件底部的代码块在工作。我怎样才能让它们在一个脚本中工作?
我通过将两个功能合二为一来实现它:
stat_list="mageck bagel2"
function _complete()
{
case 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