【发布时间】:2019-06-20 11:03:14
【问题描述】:
我在 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 在脚本中自动完成它。有可能吗?
【问题讨论】:
-
read可以输出提示,不需要echo。你应该几乎总是使用-r和read。read -e在输入期间启用 readline,您已经在脚本中获得了该功能。您可以使用 Bash 的 programmable completion 创建自己的补全。
标签: bash tab-completion