descritor de arquivo no unix

0

eu tenho o script de shell abaixo:

pankaj@pankaj-Lenovo-G500:~$ cat demoscr
if [ $# -ne 2 ]
then
   echo "Error : Number are not supplied" 1>&2
   echo "Usage : $0 number1 number2" 1>&2
   exit 1
fi
ans='expr $1 + $2'
echo "Sum is $ans"

quando executo o script de shell, a mensagem de erro está sendo impressa, mas nada está presente no arquivo er1. por quê?

pankaj@pankaj-Lenovo-G500:~$ ./demoscr > er1
Error : Number are not supplied
Usage : ./demoscr number1 number2
pankaj@pankaj-Lenovo-G500:~$ cat er1
pankaj@pankaj-Lenovo-G500:~$ cat er1
    
por Pankaj Pandey 01.12.2016 / 19:52

1 resposta

2

O operador simples > redireciona o STDOUT para um arquivo. No entanto, seu script está imprimindo para STDERR (consulte o 1>&2 no final de seus comandos echo ). É por isso que você vê o texto no terminal e não no arquivo de log.

Você precisa redirecionar a saída do script usando 2> (somente redirecionamento STDERR) ou &> (redirecionar STDOUT e STDERR).

Veja Como faço para salvar a saída do terminal para um arquivo? para mais detalhes sobre redirecionamento de saída para arquivos no Bash.

    
por Byte Commander 01.12.2016 / 19:59