netcat的新行问题

Joh*_*hnG 7 unix linux

我使用下面的命令将一些字符串发送到udp监听服务器.

回声"A 192.168.192.168"| nc -u 192.168.2.1 1234

但是服务器在echoed字符串中的尾随'\n'.

我也试过下面的命令,但失败了

回声"A 192.168.192.168"| nc -uC 192.168.2.1 1234

如何删除那个尾随的新行字符?我在nc有什么特别的选择吗?

c00*_*ter 11

echo通常提供-n旗帜.这不是标准的.

string 要写入标准输出的字符串.如果第一个操作数是-n,或者如果任何操作数包含反斜杠('\')字符,则结果是实现定义的.

在符合XSI的系统上,如果第一个操作数是-n,则应将其视为字符串,而不是选项.


我建议使用 printf

printf "A 192.168.192.168" | nc -u 192.168.2.1 1234
Run Code Online (Sandbox Code Playgroud)

printf 除非被告知,否则不会添加新行,这是标准行为.

  • 许多人喜欢依赖于_implementation-defined_行为并不能使它变得好或正确,这一事实也很少见(有多少人使用_Plan9_?)来找到`echo`,其中`-n`被处理为普通字符串而不是交换机.你可以选择.我只是提出了一个建议:) (3认同)

Lev*_*von 5

尝试使用

echo -n
Run Code Online (Sandbox Code Playgroud)

所以

echo -n "A 192.168.192.168" | nc -u 192.168.2.1 1234
Run Code Online (Sandbox Code Playgroud)

echo man page说: -n do not output the trailing newline