A diferença é:
echo "INT is an integer."
escreve para o padrão e
echo "INT is not an integer." >&2
escreve para o erro padrão.
No mundo do Unix, stdout
é geralmente usado quando tudo está funcionando corretamente e stderr
é geralmente usado para imprimir mensagens quando algo dá errado.
Por padrão, stdout
e stderr
imprimem na tela. A principal diferença é que os operadores >
e |
capturam stdout
por padrão, mas não stderr
.
Então, se você tivesse seu script no meio de um pipeline, INT is an integer.
continuaria no pipeline e INT is not an integer
imprimia em sua tela, em vez de ir para o pipeline.