加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

数组 – 最简单的方法来检查数组中的索引或键?

发布时间:2020-12-15 16:20:21 所属栏目:安全 来源:网络整理
导读:使用: set -o nounset 1)有一个索引数组,如: myArray=( "red" "black" "blue" ) 这是检查元素1是否设置的最短方式? 我有时使用以下: test "${#myArray[@]}" -gt "1" echo "1 exists" || echo "1 doesn't exist" 我想知道是否有一个首选的。 2)如何处理
使用:
set -o nounset

1)有一个索引数组,如:

myArray=( "red" "black" "blue" )

这是检查元素1是否设置的最短方式?
我有时使用以下:

test "${#myArray[@]}" -gt "1" && echo "1 exists" || echo "1 doesn't exist"

我想知道是否有一个首选的。

2)如何处理非连续索引?

myArray=()
myArray[12]="red"
myArray[51]="black"
myArray[129]="blue"

如何快速检查’51’已经设置为例子?

3)如何处理关联数组?

declare -A myArray
myArray["key1"]="red"
myArray["key2"]="black"
myArray["key3"]="blue"

如何快速检查’key2’已经用于例子?

谢谢

EDITED
最简单的方式在我看来:

if test "${myArray['key_or_index']+isset}"
    then
        echo "yes"
    else
        echo "no"
fi;

这适用于索引和关联数组。没有使用set -o nounset显示错误。
感谢doubleDown的headup。

要检查元素是否设置(适用于索引和关联数组)
[ ${array[key]+abc} ] && echo "exists"

基本上$ {array [key] abc}是什么

> if array [key] is set,return abc
>如果array [key]未设置,则不返回任何值

参考文献:

>在Bash手册和小笔记中查看Parameter Expansion

if the colon is omitted,the operator tests only for existence [of parameter]

>这个答案实际上是从这个问题的答案改编的:How to tell if a string is not defined in a bash shell script?

包装函数:

exists(){
  if [ "$2" != in ]; then
    echo "Incorrect usage."
    echo "Correct usage: exists {key} in {array}"
    return
  fi   
  eval '[ ${'$3'[$1]+muahaha} ]'  
}

例如

if ! exists key in array; then echo "No such array element"; fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读