#!/bin/bash
val=(4196976 4601313 4242010 0 3581283 2392831 3176852 3205880 3794451 0 3627872)
n=0
for i in ${val[@]}; do
[ $i -eq 0 ] && echo Index: $n, value: $i
((n++))
done
Eu tenho uma matriz -
val=(4196976 4601313 4242010 0 3581283 2392831 3176852 3205880 3794451 0 3627872)
Estou tentando encontrar o índice de todos os elementos cujos valores são iguais a 0
Como posso fazer isso?
Isso é o que eu tentei -
for ((i = 1; i <= 10; i++)); do
if [ "$i" -eq "0" ]; then
echo "Index: $i, value: ${val[i]}"
fi
done
A saída deve ser
Index: 3, value: 0
Index: 9, value: 0
Se a matriz tiver lacunas, pode ser melhor fazer um loop pelos índices da matriz:
for i in "${!val[@]}"
do
if [[ ${val[i]} -eq 0 ]]
then
echo "Index: $i, value: ${val[i]}"
fi
done
Então, se sua matriz for como:
val=([100]=327823 [54]=0 [787998]=377463287)
Você ainda receberia 54
como o índice.
Isso também deve funcionar para matrizes associativas (strings como índices ao invés de inteiros).