forループインデックスの標準出力からユーザー入力を取得する方法

forループインデックスの標準出力からユーザー入力を取得する方法

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

おすすめ記事