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