2つ以上の配列を使用するネストループの場合、ネストされたループ内の反復番号を取得する
A=(0.1 0.2)
B=(2 4 6)
AB=$((${#A[@]}*${#B[@]})) # total number of iterations (length of A * length of B)
for a in ${A[*]}; do
for b in ${B[*]}; do
$(($a+$b)) # task using each combination of A and B
echo ? # show number of the iteration (i.e. 1 to length of AB)
done
done
echo
を使用して上記のように、反復の数を取得するための最良の方法は何ですか?すべてのロジックは、最も内側のループ内で、我々は内部の実行を検討している場合である場合、これは理にかなって
i=0
for a in "${A[@]}"; do
for b in "${B[@]}"; do
((i++))
printf "Iteration: $i\n"
: your code
done
done
:
ありがとうございました。このメソッドは、この例ではうまく機能します。しかし、 'set -e'(エラー時に終了)でスクリプトを起動すると、何も表示されません。明らかに重要ではありませんが、これはこのコードに不完全さがあることを示していますか? – user3743235
@ user3743235 'i = 1'で始まり、'((++ i)) 'を使うと、' set -e'で動作します。しかし、なぜ私には分かりませんか。 – pfnuesel