이것이 내가 실행하려는 쉘 스크립트입니다. 예를 들어, 100개의 kubernetes 포드와 100개의 다양한 차량이 있습니다.
자동차 목록을 생성하고 목록에서 특정 자동차 10대를 선택하고 싶습니다.
내 목표는 선택한 자동차의 포드에 새 이미지를 배포하는 것입니다.
배열과 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
이름으로 또는 차량 번호로만 자동차를 선택하는 방법은 무엇입니까?
이 외에 다른 방법이 있는지 제안 부탁드립니다. 또는 쉘 스크립팅에 대한 더 나은 방법을 제안하십시오.
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