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
重複を減らすために、タスクを別のループに入れることができます。vN
for
もちろん、値を一度表示する以外に、およびを v1
使用しない場合は、変数とを実行してスキップできます。v2
aws ... | awk
echo