I'm pretty new to bash.
I have the following code:
while read line
do
    foundproduct=`echo $line | awk -F "\"*,\"*" '{print $2}'`
    if [ "$foundproduct" == "$product" ]; then
        productid=`echo $line | awk -F "\"*,\"*" '{print $19}'`
        newid=1
        for i in ${productids[@]}
        do
            if [ "${productids[i]}" == "$productid" ] ; then
                newid=0
                break
            fi
        done
        if (( newid == 1 )) ; then
            declare -p productids
            echo "$productid"
            echo "1. $productids[${#productids[@]}]"
            productids+=("$productid")
            echo "2. $productids[${#productids[@]}]"
            declare -p productids
        fi          
        loadid=`echo $line | awk -F "\"*,\"*" '{print $39}'`
    fi
done < hddtable1.csv
Which produces the following result:
declare -a productids='()'
ST900MM0006 
1. [0]
2. ST900MM0006 [1]
declare -a productids='([0]="ST900MM0006 ")'
declare -a productids='([0]="ST900MM0006 ")'
ST600MM0006 
1. ST900MM0006 [1]
2. ST900MM0006 [2]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 ")'
ST600MM0006 
1. ST900MM0006 [2]
2. ST900MM0006 [3]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 ")'
ST600MM0006 
1. ST900MM0006 [3]
2. ST900MM0006 [4]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 ")'
ST600MM0006 
1. ST900MM0006 [4]
2. ST900MM0006 [5]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 ")'
ST600MM0006 
1. ST900MM0006 [5]
2. ST900MM0006 [6]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 ")'
ST600MM0006 
1. ST900MM0006 [6]
2. ST900MM0006 [7]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 ")'
ST600MM0006 
1. ST900MM0006 [7]
2. ST900MM0006 [8]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 ")'
ST300MM0006 
1. ST900MM0006 [8]
2. ST900MM0006 [9]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 ")'
ST300MM0006 
1. ST900MM0006 [9]
2. ST900MM0006 [10]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 ")'
ST300MM0006 
1. ST900MM0006 [10]
2. ST900MM0006 [11]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 " [10]="ST300MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 " [10]="ST300MM0006 ")'
ST300MM0006 
1. ST900MM0006 [11]
2. ST900MM0006 [12]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 " [10]="ST300MM0006 " [11]="ST300MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 " [10]="ST300MM0006 " [11]="ST300MM0006 ")'
ST300MM0006 
1. ST900MM0006 [12]
2. ST900MM0006 [13]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 " [10]="ST300MM0006 " [11]="ST300MM0006 " [12]="ST300MM0006 ")'
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 " [10]="ST300MM0006 " [11]="ST300MM0006 " [12]="ST300MM0006 ")'
ST300MM0006 
1. ST900MM0006 [13]
2. ST900MM0006 [14]
declare -a productids='([0]="ST900MM0006 " [1]="ST600MM0006 " [2]="ST600MM0006 " [3]="ST600MM0006 " [4]="ST600MM0006 " [5]="ST600MM0006 " [6]="ST600MM0006 " [7]="ST600MM0006 " [8]="ST300MM0006 " [9]="ST300MM0006 " [10]="ST300MM0006 " [11]="ST300MM0006 " [12]="ST300MM0006 " [13]="ST300MM0006 ")'
The column from the CSV looks like this: column
I've used this method of appending to arrays in bash in this same script and it worked fine, can someone help me figure out why this isn't working? I tried doing productids+="$productid" and that, for some reason, just appends everything to the end of the first entry in the array.
Iterating through the array:
for i in ${productids[@]}
do
    echo "${productids[i]}"
done
Full output of this:
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006 
ST900MM0006
 
     
    