我正在尝试编写一个脚本:
a) 读取 .csv 文件的内容
b) 将变量设置为第一个位置(即逗号左侧)的值
c) 将变量值与数组中的每个位置进行比较。如果该值在数组中,则执行一个命令,如果不是,则将该值插入到数组中的第一个可用槽中。
.csv 文件格式为:
co:7077,he17208am3200816internet.pdf,he17208am3200917internet.pdf co:7077,he17208am3200817internet.pdf,he17208am3200918internet.pdf co:7077,he17208am3200818internet.pdf,he17208am3200919internet.pdf co:7077,he17208am3200819internet.pdf,he17208am3200915internet.pdf co:7162,tra210051internet. pdf,tra21005101internet.pdf co:7162,tra210051appinternet.pdf,tra21005102internet.pdf co:7178,tra4157l11201021internet.pdf,tra4158l11201021internet.pdf co:7178,tra4157l11201022internet.pdf,tra4158l21
到目前为止,我的脚本如下所示:
#!/bin/bash
declare -a array
anum=0
src=source.csv
pid=0
while read line;
do
pid=$( echo $line | awk '{print$1}' FS=",")
for n in "${array[@]}";
do
if [[ "$pid" = "$n" ]] ;
then
echo Duplicate value: "$pid";
else
array[$anum]="$pid"
anum=$(( $anum +1 ))
fi
done
done < $src
echo ${array[@]}
当脚本被执行时,pid 会随着 while 循环的每次迭代成功设置和重置,但显然嵌套的 for 循环永远不会运行。
从我的谷歌搜索来看,我怀疑它与 pid 行中的管道有关,但如果我能弄清楚如何让它工作,我会被搞砸的。
任何帮助是极大的赞赏。