簡體   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