Эхо + добавить строку + 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).