首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回与值匹配的元素的索引。

返回与值匹配的元素的索引。
EN

Unix & Linux用户
提问于 2018-11-13 04:28:22
回答 2查看 2.4K关注 0票数 0

我有个数组-

代码语言:javascript
运行
复制
val=(4196976 4601313 4242010 0 3581283 2392831 3176852 3205880 3794451 0 3627872)

我试图找到值等于0的所有元素的索引。

我怎么才能做到这一点?

这就是我试过的-

代码语言:javascript
运行
复制
for ((i = 1; i <= 10; i++)); do
    if [ "$i" -eq "0" ]; then
            echo "Index: $i, value: ${val[i]}"
    fi
done

输出应该是

代码语言:javascript
运行
复制
Index: 3, value: 0
Index: 9, value: 0
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-11-13 04:33:14

代码语言:javascript
运行
复制
#!/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
票数 2
EN

Unix & Linux用户

发布于 2018-11-13 04:51:41

如果数组中有空白,则最好循环遍历数组的索引:

代码语言:javascript
运行
复制
for i in "${!val[@]}"
do
    if [[ ${val[i]} -eq 0 ]]
    then
        echo "Index: $i, value: ${val[i]}"
    fi
done

所以,如果您的数组是:

代码语言:javascript
运行
复制
val=([100]=327823 [54]=0 [787998]=377463287)

您仍然可以得到54作为索引。

这也适用于关联数组(字符串作为索引而不是整数)。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/481375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档