echo + acrescentar sequência + linux

1

por favor, conselhos como pode ser - (esta ação foi na máquina linux)

porque a string - "append" que adiciono com echo é após a linha "spb_IP = 172.17.100.122"

e não abaixo da linha - "spb_IP = 172.17.100.122" ????

mais arquivo

 spa_IP=172.17.100.121
 spb_IP=172.17.100.122

echo "append" > > arquivo

mais arquivo

 spa_IP=172.17.100.121
 spb_IP=172.17.100.122append this
    
por yael 03.09.2012 / 16:46

1 resposta

2

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).

    
por 03.09.2012 / 16:52

Tags