我有一个脚本运行为
./script.sh --params
或为
linux32 ./script.sh --params
在我的bash_completion文件中
complete -F _my_function ./script.sh
这仅适用于./script.sh
调用。
我尝试添加
complete -F _my_function "linux32 ./script.sh"
功能如下:
$ type _my_function
_my_function is a function
_my_function ()
{
local cur="${COMP_WORDS[$COMP_CWORD]}";
local prev="";
(( COMP_CWORD > 0 )) && prev="${COMP_WORDS[$(( COMP_CWORD - 1))]}";
[[ $cur == '=' && $prev == --* ]] && {
COMPREPLY=("");
return
};
local words=(-a -o -p -h -u);
case "${prev}" in
-a)
local actions="build shell clean distclean download upgrade upload unmount";
COMPREPLY=($(compgen -W "${actions}" -- ${cur}));
return 0
;;
-o)
local optional_groups="kde";
COMPREPLY=($(compgen -W "${optional_groups}" -- ${cur}));
return 0
;;
-p)
local files=$(ls -1 src/lfs/* | sed "s,.*src/lfs/,,g");
COMPREPLY=($(compgen -W "${files}" -- ${cur}));
return 0
;;
*)
;;
esac;
_exclude_cmd_line_opts;
COMPREPLY=($(compgen -W "${words[*]}" -- "$cur"))
}
但它似乎不起作用。
有什么建议吗? 谢谢, 伊万(IvanK)。