Bash 自动完成参数和参数

Bash 自动完成参数和参数,bash,autocomplete,Bash,Autocomplete,我在文件test.py中有以下Python脚本: import argparse library_list=["LibraryA","LibraryB","LibraryC"] ap = argparse.ArgumentParser() ap.add_argument("-l", "--library", required=True, choices=library_list, hel

我在文件
test.py
中有以下Python脚本:

import argparse

library_list=["LibraryA","LibraryB","LibraryC"]

ap = argparse.ArgumentParser()
ap.add_argument("-l", "--library", required=True, choices=library_list,
   help="Choose library")
args = vars(ap.parse_args())

library=args["library"]
print(library+" chosen")
我希望能够自动完成
-l/--library
的参数。为此,我有一个Bash自动完成脚本:

lib_list="LibraryA LibraryB LibraryC"

function libs()
{
case $3 in
    -l) COMPREPLY=($(compgen -W "$lib_list" "${COMP_WORDS[$COMP_CWORD]}"));;
esac
}

complete -F libs test.py
但是,这个脚本只完成了
-l
标志,因为我无法使它在
--library
中工作。我尝试用
--library
代替
-l
或使用
-l |--library)COMPREPLY=($(compgen-W“$lib_list”“${COMP_WORDS[$COMP_cwords]})为
case
语句添加另一行代码,但两者都不起作用。
如何使其工作?

添加带有
--library)
的行,以及相同的操作和修改该行使其具有
-l |--library)
而不是
-l)
在此处工作。您是否在进行更改后忘记了
source
bash文件?是的,您是对的,当我再次尝试它时,它确实有效,愚蠢的我。。。