配列のインデックスを取得する

配列のインデックスを取得する

forループで繰り返される配列のインデックスを取得しようとしています。私は次のようなことをしています。

arr=( foo bar baz )
for i in $arr; do
  echo "index ${#arr}";
done

ただし、これは配列の現在の値の位置ではなく、配列内の要素の数だけを提供します。どうすればいいですか?

ベストアンサー1

誰も明確な答えを持っていないようだからそうします。

なぜCやJavaなどの主流言語で使用される数値forループを使用しないのですか?

for ((i = 1; i <= $#arr; i++)); do
    echo "Index: $i, value: ${arr[i]}"
done

あるいは、より短いかもしれません(大規模な配列の場合はより遅く、潜在的にメモリ集約的です)。

for i in {1..$#arr}; do
    echo "Index: $i, value: ${arr[i]}"
done

おすすめ記事