2012-06-30 63 views
7

我正在使用下面的命令向udp偵聽服務器發送一些字符串。netcat新行問題

echo「A 192.168.192.168」| nc -u 192.168.2.1 1234

但服務器正在以回顯字符串結尾'\ n'。

我曾嘗試下面的命令太多,但未能

回聲 「A 192.168.192.168」 | nc -uC 192.168.2.1 1234

如何刪除尾隨的新行字符? 我在NC有什麼特別的選擇嗎?

+0

投票重新開放,因爲它看起來像是有價值的知識。 – lpapp

回答

5

嘗試使用

echo -n 

所以

echo -n "A 192.168.192.168" | nc -u 192.168.2.1 1234 

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

+0

親愛的levon thnx – JohnG

9

echo通常提供-n標誌。這不是標準。

字符串要寫入標準輸出的字符串。如果第一個操作數是-n,或者任何操作數包含反斜槓('\')char- acter,則結果是實現定義的。

在符合XSI標準的系統上,如果第一個操作數是-n,則它應被視爲字符串,而不是選項。


我會建議使用printf

printf "A 192.168.192.168" | nc -u 192.168.2.1 1234 

printf犯規追加一個新行,除非它被告知,這是標準的行爲。

+0

我從來沒有聽說過echo的'-n'選項不標準,請您詳細說明一下嗎?我多年來使用的每個Linux/Unix系統都有這個功能。 – Levon

+0

請參閱'man 1p echo'回聲的POSIX手冊頁。另外,通常調用的'echo'是shell內建的,而不是'/ bin/echo'下的實際可執行文件。例如,在_Bash_下面,看看'echo echo'提供了什麼迴應。 – c00kiemon5ter

+0

剛剛在我的Linux系統上嘗試過'bash'下的'help echo',並且它給了'-n \t不添加換行符。現實地說,有人有可能遇到'echo -n' * not * working? – Levon