模拟Bash脚本中的TAB键自动完成

时间:2019-06-20 11:03:14

标签: bash tab-completion

我在Kubernetes中有一个简单的Bash脚本运行命令,但是我需要在一个命令中自动完成才能继续:

#!/bin/bash
DATE=$(date +%Y-%m-%d_%H:%M:%S)
printf "Available Kubectl contexts:\n\n"
kubectl config get-contexts -o=name | sort -n
printf "%s\n"
echo -ne "Select Kubectl context: "; read KUBE_CONTEXT
for I in $KUBE_CONTEXT ; do
    kubectl config use-context $KUBE_CONTEXT
done
echo -ne "Path to file containing Job ID list: "; read -e JOB_ID_LIST
printf "%s\n"
echo "Setting port forwarding to Prometheus POD in $KUBE_CONTEXT" ;

这是我需要自动补全的地方,因为每个kubectl环境中的pod名称都不同。

kubectl port-forward -n prometheus prometheus-prometheus-RANDOM_TEXT-RANDOM_TEXT 20001:9090

例如:

kubectl port-forward -n prometheus prometheus-prometheus-6465c4df4c-4dvf7 8080:9090 &

当我手动输入自动完成功能时,它可以工作,但是我希望Bash在脚本中自动完成它。有可能吗?

1 个答案:

答案 0 :(得分:0)

在脚本中使用外壳程序的交互式功能应该是您的最后选择。

我们可以做到: 首先让我们获取名称空间中的所有pod名称;然后过滤所需的广告连播名称。

podName=$(kubectl get pods -n prometheus -o name | grep "^pod/prometheus-prometheus-" | cut -d/ -f2)