Isso ocorrerá porque o arquivo não termina em \n
.
hexdump -C file
00000000 73 70 61 5f 49 50 3d 31 37 32 2e 31 37 2e 31 30 |spa_IP=172.17.10|
00000010 30 2e 31 32 31 0a 73 70 61 5f 49 50 3d 31 37 32 |0.121.spa_IP=172|
00000020 2e 31 37 2e 31 30 30 2e 31 32 32 |.17.100.122|
Observe que o arquivo termina em 0x32, que é ASCII para 2
Quando você acrescenta a ele, torna-se
hexdump -C file
00000000 73 70 61 5f 49 50 3d 31 37 32 2e 31 37 2e 31 30 |spa_IP=172.17.10|
00000010 30 2e 31 32 31 0a 73 70 61 5f 49 50 3d 31 37 32 |0.121.spa_IP=172|
00000020 2e 31 37 2e 31 30 30 2e 31 32 32 61 70 70 65 6e |.17.100.122appen|
00000030 64 0a
Note que, como você observou, o 122 é executado diretamente no aplicativo 122append
Para corrigir seu 'problema', você precisa
echo -e "\nappend"
para adicionar o \n
ausente.
hexdump -C file
00000000 73 70 61 5f 49 50 3d 31 37 32 2e 31 37 2e 31 30 |spa_IP=172.17.10|
00000010 30 2e 31 32 31 0a 73 70 61 5f 49 50 3d 31 37 32 |0.121.spa_IP=172|
00000020 2e 31 37 2e 31 30 30 2e 31 32 32 0a 61 70 70 65 |.17.100.122.appe|
00000030 6e 64 0a |nd.|
Agora, há um .
entre o 122 e o append que representa o caractere 0x0a (Feed de linha ASCII).