使用:
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.
我想知道是否有一种有效的方法来检查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的解决方案,但我想知道是否还有其他解决方案.
请理解我知道琐碎的解决方案是迭代数组,但我不希望这样.
在 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)
关于如何测试这个的任何想法?