пожалуйста, посоветуйте, как это может быть - (это действие было на машине 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).