how to load an array from a file in RHEL bash script
I want to load an array from a file. I developed the following:
declare -a targetarray count=0 while read line do targetarray[$count]=$line ((count++)) done < /tmp/find-fmfm-reachlist-sorted.txt When I echo $line, it shows each line in the file, as expected. An echo of $count shows it increasing. However, an echo of $targetarray[$count] shows it storing the first value of $line in each row in the array. What am I doing wrong? line = 2143347423 9038945094 130 targetarray = 2143347423 9038945094 130[0] line = 2147292028 9034514086 130 targetarray = 2143347423 9038945094 130[1] line = 2148080083 9034514086 130 targetarray = 2143347423 9038945094 130[2] . . . |
It should work! How did you echo the array elements? Which command?
|
Thanks! I added the echo commands back into the script, and an if statement to stop it:
while read line do echo "count = $count" echo "line = $line" targetarray[$count]=$line echo "targetarray row = $targetarray[$count]" ((count++)) if [ $count -gt 5 ] then exit fi done < /tmp/find-fmfm-reachlist-sorted.txt output: count = 0 line = 2143347423 9038945094 130 targetarray row = 2143347423 9038945094 130[0] count = 1 line = 2147292028 9034514086 130 targetarray row = 2143347423 9038945094 130[1] count = 2 line = 2148080083 9034514086 130 targetarray row = 2143347423 9038945094 130[2] count = 3 line = 2149126551 9034515033 130 targetarray row = 2143347423 9038945094 130[3] count = 4 line = 2392184778 2394951912 130 targetarray row = 2143347423 9038945094 130[4] count = 5 line = 2392184779 2394951912 130 targetarray row = 2143347423 9038945094 130[5] |
You forgot the curly brackets:
Code:
echo "targetarray row = ${targetarray[$count]}" |
All times are GMT -5. The time now is 06:24 PM. |