これが私が実行したいシェルスクリプトです。たとえば、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