Назад | Перейти на главную страницу

эхо + добавить строку + 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 "добавить" >> файл

еще файл

 spa_IP=172.17.100.121
 spb_IP=172.17.100.122append this

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