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文件?是的,您是对的,当我再次尝试它时,它确实有效,愚蠢的我。。。