相关疑难解决方法(0)

检查数组中索引或键的最简单方法是什么?

使用:

set -o nounset
Run Code Online (Sandbox Code Playgroud)

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

myArray=( "red" "black" "blue" )
Run Code Online (Sandbox Code Playgroud)

检查元素1是否设置的最短方法是什么?
我有时会使用以下内容:

test "${#myArray[@]}" -gt "1" && echo "1 exists" || echo "1 doesn't exist"
Run Code Online (Sandbox Code Playgroud)

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

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

myArray=()
myArray[12]="red"
myArray[51]="black"
myArray[129]="blue"
Run Code Online (Sandbox Code Playgroud)

如何快速检查'51'已经设置好了?

3)如何处理关联数组?

declare -A myArray
myArray["key1"]="red"
myArray["key2"]="black"
myArray["key3"]="blue"
Run Code Online (Sandbox Code Playgroud)

例如,如何快速检查'key2'是否已被使用?

谢谢

编辑
最简单的方式在我看来:

if test "${myArray['key_or_index']+isset}"
    then
        echo "yes"
    else
        echo "no"
fi;
Run Code Online (Sandbox Code Playgroud)

这适用于索引和关联数组.set -o nounset没有显示错误.
感谢headDown为headup.

arrays indexing bash key

77
推荐指数
5
解决办法
6万
查看次数

检查Bash数组中是否存在元素

我想知道是否有一种有效的方法来检查Bash中的数组中是否存在元素?我正在寻找类似于我在Python中可以做的事情,例如:

arr = ['a','b','c','d']

if 'd' in arr:
    do your thing
else:
    do something
Run Code Online (Sandbox Code Playgroud)

我已经看到使用关联数组为Bash 4+进行bash的解决方案,但我想知道是否还有其他解决方案.

请理解我知道琐碎的解决方案是迭代数组,但我不希望这样.

arrays bash shell search

63
推荐指数
4
解决办法
14万
查看次数

检查bash中是否存在关联数组元素

在 bash 脚本中,我在变量中有一个语言环境,如下所示

locale=fr_ma
Run Code Online (Sandbox Code Playgroud)

我也有一个像这样的关联数组

declare -A new_loc_map
new_loc[fr_ma]=en_ma
new_loc[el_gr]=en_gr
new_loc[sl_si]=en_si
Run Code Online (Sandbox Code Playgroud)

我想检查new_loc带键的元素是否${locale}存在

我认为这应该有效,但它没有:

if [[ -v "${new_loc[${locale}]}" ]]
    then
        echo -e "${locale} has a new_loc"
    fi
fi
Run Code Online (Sandbox Code Playgroud)

关于如何测试这个的任何想法?

arrays bash associative-array

3
推荐指数
1
解决办法
5063
查看次数

标签 统计

arrays ×3

bash ×3

associative-array ×1

indexing ×1

key ×1

search ×1

shell ×1