正如我所说的标题。我尝试了这段代码:
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"
除非您只想在 key 不存在时执行特定操作,否则您可以跳过 if
; areasArray[$areaName]=
是幂等的。
关于linux - 仅当尚未添加值时才使用 bash 将值添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043788/