繁体   English   中英

仅当尚未加入数组时才将值添加到数组中,使用 bash

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM