if tty>/dev/null ; then
read x
else
read x<fic
fi
significa que fic
será lido somente quando tty
retornar um erro. O que acontecerá quando descobrir que seu stdin
não é um terminal. Normalmente, isso acontece quando o script está em um canal ou quando você o executa via nohup
, ou como uma tarefa cron ou remotamente via ssh -T
...
Usar [ -t 0 ]
como uma condição é praticamente o mesmo (e mais rápido, já que [
aka test
geralmente é incorporado nestes dias).