Эхо + добавить строку + linux

Пожалуйста , посоветуйте, как это может быть - (это действие было на машине Linux)

почему строка - "append", которую я добавляю с помощью echo, стоит после строки "spb_IP=172.17.100.122"

а не под чертой - "spb_IP=172.17.100.122"????

больше файла

 spa_IP=172.17.100.121
 spb_IP=172.17.100.122

echo "append" >> file

больше файла

 spa_IP=172.17.100.121
 spb_IP=172.17.100.122append this

1 ответ

Решение

Это будет потому, что файл не заканчивается \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|

Обратите внимание, что файл заканчивается на 0x32, который является ASCII для 2

Когда вы добавляете к нему это становится

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

Обратите внимание, что, как вы заметили, 122 бежит прямо в приложение 122append

Чтобы решить вашу "проблему", вам нужно

echo -e "\nappend" 

добавить недостающее \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 0a 61 70 70 65  |.17.100.122.appe|
00000030  6e 64 0a                                          |nd.|

Сейчас есть . между 122 и дополнением, которое представляет символ 0x0a (перевод строки ASCII).

Другие вопросы по тегам