Bashループの作成方法

Bashループの作成方法

このコードを単純化し、より強力にするための最良の方法は何ですか?

QRCode=$(cat /etc/wireguard/qr/client1)
QRCode2=$(cat /etc/wireguard/qr/client2)
QRCode3=$(cat /etc/wireguard/qr/client3)
QRCode4=$(cat /etc/wireguard/qr/client4)
QRCode5=$(cat /etc/wireguard/qr/client5)

私はこれをループに設定し、必要なだけクライアントを構築するために任意の数に変更できます。以下は私が試したがうまくいかなかったことです。

# Change Clients variable to create different amounts of qr codes
clients=10

counter=1
while [ $counter -le $clients ]
do
    QRCode${counter}=$(cat /etc/wireguard/qr/client${counter})
    ((counter++))
done

ファイル(client1、client2、client3)に基づいて、10の変数(QRCode1、QRCode2、QRCode3)と10の値が生成されます。

ベストアンサー1

単一変数の代わりに配列を使用してファイル数を知っています。

declare -a QRCodes

for i in {1..10}; do 
  QRCodes[$i]="$(cat /etc/wireguard/qr/client$i)"
done

次に、特定の値を検索します。

$ echo "${QRCodes[1]}"
<some value from client1 file>

すべての値を取得するには:

printf "%s\n" "${QRCodes[@]}"

おすすめ記事