나는 배열을 가지고 있습니다 -
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
색인을 얻을 수 있습니다.
이는 연관 배열(정수가 아닌 인덱스로 사용되는 문자열)에서도 작동합니다.
답변2
#!/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