Os prompts de read
e select
devem ir para Erro Padrão, pois são prompts de interação do usuário e não saída real . Isso permite que você execute tool.sh > tool.out
e ainda use read
e select
para coletar informações do usuário sem "contaminar" a saída real.
A Saída Padrão é a saída típica de um programa, idealmente de tal forma que poderia ser canalizada para a Entrada Padrão de outra, sem problemas, nem confusão.
É também por isso que curl
, por exemplo, apresenta seu progresso de download no Erro Padrão, em vez da Saída Padrão; você pode curl http://www.example.com/path/to/file > file
e somente o conteúdo de file
é exibido (e, portanto, redirecionado para file
, enquanto os dados informativos são exibidos usando o erro padrão.