这是我要执行的 shell 脚本。例如,我有 100 个 kubernetes pod 和 100 辆不同的车辆。
我想要生成一个汽车列表,并从列表中选择 10 辆特定汽车。
我的目标是将新图像部署到所选汽车的 Pod 中。
我可以通过数组和 grep 生成汽车列表。
#!/bin/bash
array=$(kubectl get pods -n ns -o=name | grep "cars" )
declare array
INDEX=1
for i in ${array[@]}; do
echo ${INDEX} $i
INDEX=$(expr $INDEX + 1) ## this will make a numbered list.
done
样本输出
1 cars-bmw
2 cars-audi
3 cars-volkswagen
4 cars-jaguar
5 cars-ferrari
6 cars-toyota
7 cars-honda
如何实现通过名称选车或者只选车号选车?
请建议是否有其他方法可以做到这一点。或者建议 shell 脚本的更好做法。
while [[ read -p {array[@]} ]]; do
echo "choosing car " {array[@]}
kubectl edit pod -n ns $podname -o yaml
done
exit 1
答案1
你可以使用select
:
select car in "${array[@]}" exit; do
case $car in
exit) break;;
*)
printf 'Choosing car: %s\n' "$car"
kubectl edit pod -n ns "$car" -o yaml
;;
esac
done
当然,这取决于您首先使用以下array=()
语法正确设置数组:
array=($(kubectl get pods -n ns -o=name | grep "cars" ))
答案2
也许类似的东西可以帮助生成列表:
for (( i=1; i<=${#array[@]}; i++ ))
do
echo $i ${array[$i]}
done