답변:
대답은 사용하는 것입니다. sh -c
개시하다 xargs
:
echo 'A,B,C,D' | xargs -d, -i -P 4 sh -c 'echo "{}" | nc localhost 7000'
만나다: https://stackoverflow.com/questions/845863/how-to-use-in-an-xargs-command
이것은 좀 더 간결 할 수 있습니다. (그리고 읽을 수 있습니다.) GNU 병렬 :
parallel 'echo {} | nc localhost 7000' ::: A B C D
또는:
parallel 'echo {} | nc localhost 7000' ::: {A..D}
용도 echo -n
그렇지 않으면 5 개의 연결 대신 4 개의 연결이 생기고 그 중 하나에는 데이터가 없습니다. 서버에서이 옵션이 선택되어 있지 않으면 문제가 발생한 것일 수 있습니다.
echo -n A,B,C,D | xargs -d, -I{} -P 4 -n 1 echo {} | nc localhost 7000
게다가, 리스닝 서버로 netcat을 사용하면, 제대로 작동하는 것처럼 보입니다 :
zhen@sydow:~$ nc -l 7000
A
D
B
C
또한 평행 한 것처럼 보입니다. 나는 순서가 틀린 것을 보았습니다.
echo를 반복 할 필요가 없습니다. xargs의 기본 동작입니다. 이 one-liner는 빠른 자체 포함 테스트 역할을하지만 테스트 리스너를 제거하기 전에 &
nc -l 7001 & echo A B C D | xargs -P4 -n1 | nc localhost 7001
결과 :
amit@deimos:~$ nc -l 7001 & echo A B C D | xargs -P4 -n1 | nc localhost 7001
[6] 7115
D
B
C
A
[6] Done nc -l 7001