2012-06-30 22 views
7

Sto usando il comando seguente per inviare alcune stringhe al server di ascolto di udp.problema di nuova riga con netcat

echo "A 192.168.192.168" | nc -u 192.168.2.1 1234

ma il server sta passando "\ n" nella stringa echo.

ho cercato di sotto di comando troppo, ma non è riuscito

echo "A 192.168.192.168" | nc -uC 192.168.2.1 1234

Come posso rimuovere il carattere di nuova riga finale ?? Ho qualche opzione speciale in nc ??

+0

Votazione per riaprire in quanto sembra avere una conoscenza utile. – lpapp

risposta

5

Provare a utilizzare

echo -n 

così

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

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

+0

preso caro levon thnx – JohnG

9

echo di solito fornisce -n bandiera. Questo non è standard.

stringa Una stringa da scrivere sullo standard output. Se il primo operando è -n, o se uno qualsiasi degli operandi contiene un carattere barra rovesciata ('\') char- , i risultati sono definiti dall'implementazione.

Su sistemi conformi a XSI, se il primo operando è -n, deve essere considerato come una stringa, non un'opzione.


Io suggerirei di usare printf

printf "A 192.168.192.168" | nc -u 192.168.2.1 1234 

printf doesnt aggiungere una nuova linea a meno che non è stato detto di, ed è il comportamento standard.

+0

Non ho mai sentito dire che l'opzione '-n' su echo non è standard, puoi approfondire? Ogni sistema Linux/Unix che ho usato nel corso degli anni ha avuto questo. – Levon

+0

vedere 'man 1p echo' la pagina man POSIX per' echo'. Anche l'echo 'di solito invocato è una shell incorporata e non l'eseguibile reale in'/bin/echo'. Sotto _Bash_ per esempio, vedi cosa fornisce echo 'help echo' – c00kiemon5ter

+0

Ho appena provato' help echo' sotto 'bash' sul mio sistema Linux e ha dato' -n \t non aggiungere una nuova riga'. E realisticamente, quanto è probabile che qualcuno trovi "echo -n' * not * working? – Levon