echo + 附加字符串 + linux

echo + 附加字符串 + linux

请指教如何做 - (此操作是在 Linux 机器上进行的)

为什么我用 echo 添加的字符串“append”位于“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

答案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 换行符)字符。

相关内容