Эмулировать нажатие клавиши TAB в скрипте Bash для автозаполнения - PullRequest
0 голосов
/ 20 июня 2019

У меня есть простая команда запуска сценария Bash в Kubernetes, однако для продолжения необходимо автозаполнение одной командой:

#!/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.

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 голосов
/ 20 июня 2019

Использование интерактивных функций оболочки в скрипте должно быть вашим последним средством.

Мы можем обойтись без: Давайте сначала получим все имена модулей в пространстве имен; затем отфильтруйте желаемое имя модуля

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