linux - 仅在尚未使用 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]=
是幂等的。
推荐阅读
- python - Pandas - 从另一个数据帧返回最近的日期时间
- node.js - Docker 容器运行节点进程在等待对长请求的响应时终止
- sql - 如何在 Oracle 中创建具有特定 SQL 选择输出的过程?
- python - Pandas 从 CSV 中旋转并添加具有连续行的列
- python - geopandas没有属性clip
- python - urllib 请求给出 404 错误,但在浏览器中工作正常
- java - 如何修复错误:致命异常:java.lang.NoClassDefFoundError
- linux-kernel - tcpdump 在传出连接上是否 100% 可靠?
- javascript - 在服务器上调用 PHP 函数但在本地服务器上工作时找不到 JS 函数
- logging - 未生成 SLFJ 日志