値に一致する要素のインデックスを返します。

値に一致する要素のインデックスを返します。

私は配列を持っています -

val=(4196976 4601313 4242010 0 3581283 2392831 3176852 3205880 3794451 0 3627872)

値が0のすべての要素のインデックスを見つけようとします。

どうすればいいですか?

これが私が試したことです -

for ((i = 1; i <= 10; i++)); do
    if [ "$i" -eq "0" ]; then
            echo "Index: $i, value: ${val[i]}"
    fi
done

出力は

Index: 3, value: 0
Index: 9, value: 0

ベストアンサー1

配列に間隔がある場合は、配列のインデックスを繰り返すことをお勧めします。

for i in "${!val[@]}"
do
    if [[ ${val[i]} -eq 0 ]]
    then
        echo "Index: $i, value: ${val[i]}"
    fi
done

したがって、配列が次のような場合:

val=([100]=327823 [54]=0 [787998]=377463287)

それでも54インデックスを取得できます。

これは連想配列(整数ではなくインデックスとして使用される文字列)でも機能します。

おすすめ記事