Parece que você realmente quer detectar se um terminal (TTY) está ou não disponível para o aplicativo. (Isso permitirá que você exiba uma barra de progresso ao executar em um terminal, mas não se incomode se estiver executando sob crontab
.)
#!/bin/bash
#
[[ -t 2 ]] && echo "This is a status update for the terminal" >&2
echo "This is a normal line of results"
A operação test -t
verifica se o descritor de arquivo numerado está ou não conectado a um terminal. 0 é stdin , 1 é stdout e 2 é stderr .
Geralmente, as informações de progresso seriam gravadas em stderr com resultados reais gravados em stdout . Dessa forma, o usuário pode descartar a saída de progresso / status se não quiser vê-la, e as atualizações de status e os resultados podem ser separados de maneira útil:
yourprogram arg1 arg2 ... > results.txt