$記号を含む変数を印刷する

$記号を含む変数を印刷する

awscliを含むbashスクリプトがあります。 forループで生成された変数を印刷しようとしています。 forループのため、印刷したい変数に$記号が含まれています。値を印刷できません。以下のスクリプトを共有しました。このスクリプトの出力はforループで生成された数値です。コマンドで生成された値を印刷したいです。

#!/bin/bash

declare -i counter=11
declare -i counter2=14

for i in {1..2}
do
    declare v1$i=$(aws iam get-group --group-name VideoEditors | awk -v counter1=$counter 'NR==counter1' | awk -F\" '{print $4}') 

    counter=$counter+7

    declare v2$i=$(aws iam get-group --group-name VideoEditors | awk -v counter3=$counter2 'NR==counter3' | awk -F\" '{print $4}')

    counter2=$counter2+7
    echo $v1$i
    echo $v2$i
done

ベストアンサー1

変数を正しくインデックス付けできるように、代わりに配列を使用してください。

#!/bin/bash

declare -ai counters=(11 14)        # indexes start from 0
v1=()
v2=()    

for i in {1..2}; do
    v1[$i]=$(aws iam get-group --group-name VideoEditors | awk -v counter1="$counter" 'NR==counter1' | awk -F\" '{print $4}') 
    counters[0]+=7

    v2[$i]=$(aws iam get-group --group-name VideoEditors | awk -v counter3="$counter2" 'NR==counter3' | awk -F\" '{print $4}')
    counters[1]+=7

    echo "${v1[$i]}"
    echo "${v2[$i]}"
done

重複を減らすために、タスクを別のループに入れることができます。vNfor

もちろん、値を一度表示する以外に、およびを v1使用しない場合は、変数とを実行してスキップできます。v2aws ... | awkecho

おすすめ記事