Hacker News new | ask | show | jobs
by znep 4280 days ago
When curl gets the end of the input, it exits and the shell closes the pipe generating an EOF. You get a broken pipe writing to one if the reader goes away, not reading from it.

I verified this on OS X with the below "server":

  $ stty -icanon min 1 time 0
  $ nc -v -l 6666
  GET / HTTP/1.1
  User-Agent: curl/7.34.0
  Host: 127.0.0.1:6666
  Accept: */*

  HTTP/1.0 200 ok
  Content-Length: 1000

  echo foo
  echo bar^C
(^C is a control-C). Even with an explicit content-length so curl knows the response was truncated, and without a terminating newline, the shell executes both commands.

Again, quite unlikely to be a problem in real life. But it is still a bad habit to feed curl into sh directly.