我有一个数组 -
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