[英]Add value to array only if not already in, using bash
正如我所说的标题。 我试过这个代码:
areasArray=()
while IFS= read -r line
do
areaName="$(awk -F ";" '{print $3}')"
echo $areaName
if [[ ! " ${areasArray[@]} " =~ " $areaName " ]]; then
areasArray+=($areaName)
echo ${areasArray[*]}
fi
done < $reportFile
$reportFile
指的是一个 CSV 文件,如下所示:
something;something;US
something;something;US
something;something;UK
something;something;FR
something;something;UK
something;something;FR
该数组将如下所示: US US UK FR UK FR
。 但我希望每个区域只有在它尚未存在时才添加。 所以它应该是这样的: US UK FR
。 我怎样才能做到这一点? 谢谢。
如果您需要执行查找,请使用关联数组,而不是索引数组。 基本上,您将像集合一样使用关联数组的键。
declare -A areasArray
while IFS=";" read _ _ areaName _; do
if [[ ! -v areasArray[$areaName] ]]; then
areasArray[$areaName]=
fi
done < "$reportFile"
除非您只想在密钥不存在的情况下执行特定操作,否则您可以跳过if
; areasArray[$areaName]=
是幂等的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.