&
envia o comando curl
para o segundo plano, onde será executado sempre que for executado, o shell não esperará por ele (ele imprime o número do trabalho e o PID). Em vez disso, o shell executa echo
, que, como é construído, pode ser executado com mais rapidez do que curl
, portanto, o shell termina com echo
e imprime o prompt antes curl
para produzir qualquer saída.
Por exemplo a saída que recebo com o Bash:
bash ~ $ curl -d "asd" 0.0.0.0/abc & echo "abc";
[1] 26757
abc
bash ~ $ curl: (7) Failed to connect to 0.0.0.0 port 80: Connection refused
Existe o aviso no início da última linha.
Atingindo Enter , o shell imprime outro prompt, no qual também verifica se o trabalho em segundo plano foi concluído e imprime uma nota sobre isso:
[1]+ Exit 7 curl -d "asd" 0.0.0.0/abc
bash ~ $
Agora, eu não sei exatamente o que você está fazendo, mas ter trabalhos em segundo plano que são impressos no terminal é um pouco estranho por causa disso, então você pode querer redirecionar a saída de curl
em outro lugar, ou executá-lo em primeiro plano. Por exemplo. curl something; echo curl done
executaria curl
primeiro, depois echo
e curl something && echo curl done
só executariam echo
se curl
não falhasse.