我试图为我自己的函数kctxt()启用Bash完成,该函数将委托给kubectl,如下所示:
kctxt() {
if [[ -z ${1+x} ]]; then
# show context if no arguments
kubectl config current-context
else
# set new context via completion
kubectl config use-context "$@"
fi
}
# For example, get completions just like:
# kubectl config use-context <tab><tab>
$ kctxt <tab><tab>
minikube eks-kube
$ kctxt ▊首先,我想补充一点,kubectl的标准完成对我来说在macOS上运行得很好,我甚至安装了complete-alias来匹配alias k=kubectl。
是否有泛型将自定义函数的完成委托给另一个也包含附加参数的命令?对于类似的问题,我咨询了许多答案,这些问题将子命令委托给另一个命令,比如exec和time,但我所能得到的只有完成主命令。
我还试图定义这样的自定义完成函数,并将其委托给__start_kubectl() (每个complete -p kubectl),但没有成功。
_complete_kctxt() {
COMPREPLY=()
COMP_WORDS=(config use-context $2)
COMP_LINE="kubectl ${COMP_WORDS[@]}"
local prev=${COMP_WORDS[$COMP_CWORD]}
local cur=${COMP_WORDS[$((++COMP_CWORD))]}
COMP_POINT=${#COMP_LINE}
[[ -z "$cur" ]] && ((++COMP_POINT))
__start_kubectl kubectl $cur $prev
}
complete -F _complete_kctxt kctxt我甚至试图通过BASH_COMP_DEBUG_FILE跟踪kubectl的完成情况,但这是很难理解的。
发布于 2020-06-19 20:22:08
你试过这样定义你的命令吗?
alias kctxt="kubectl config current-context"它适用于安装了bash-completion的其他别名。.bash_aliases中的别名和.bash_completion中的该行
complete -F _complete_alias kctxthttps://stackoverflow.com/questions/61335790
复制相似问题