A resposta está oculta na sua pergunta.
echo $variable > file in a loop outputs only the last value of variable
produzirá, obviamente, apenas o último valor.
em vez disso, a resposta é
echo $variable >> file in a loop outputs all the values of variable
>
sobrescreve um valor enquanto >>
o anexa. Portanto, se você estiver usando apenas > em um loop, ele continuará sobrescrevendo, e somente o último valor estará lá no arquivo no final
ijaz@ijaz-HP-EliteBook-8560p:~$ echo hi>test1
ijaz@ijaz-HP-EliteBook-8560p:~$ cat test1
hi
ijaz@ijaz-HP-EliteBook-8560p:~$ echo hello>test1
ijaz@ijaz-HP-EliteBook-8560p:~$ cat test1
hello
ijaz@ijaz-HP-EliteBook-8560p:~$ echo hello1>>test1
ijaz@ijaz-HP-EliteBook-8560p:~$ cat test1
hello
hello1
ijaz@ijaz-HP-EliteBook-8560p:~$