私は次のようなスクリプトを書き込もうとしています。
a).csvファイルのコンテンツを読み取ります
b)変数を最初の位置(つまり、コンマの左側)の値に設定します
c)変数値を配列内の各位置と比較します。値が配列にある場合は1つのコマンドを実行し、そうでない場合は、その値を配列の最初の使用可能なスロットに挿入します。
.csvファイルの形式は次のとおりです。
co:7077、he17208am3200816internet.pdf、he17208am3200917internet.pdf co:7077、he17208am3200817internet.pdf、he17208am3200918internet.pdf co:7077、he17208am3200818internet.pdf、he17208am3200919internet.pdf co:7077、he17208am3200819 pdf、tra21005101internet.pdf co:7162、tra210051appinternet.pdf、tra21005102internet.pdf co:7178、tra4157l11201021internet.pdf、tra4158l11201021internet.pdf co:7178、tra4157l11201022internet.pdf、tra4158l11201022internet.pdf
これまでの私のスクリプトは次のようになります。
#!/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[@]}
スクリプトが実行されると、whileループが繰り返されるたびにpidが正常に設定およびリセットされますが、ネストされたforループは実行されないようです。
私のグーグルから、それはpidラインのパイプと関係があるのではないかと思いますが、それを機能させる方法を理解できれば、私は悩まされるでしょう。
どんな助けでも大歓迎です。