Controlando a saída em um shell script do Linux

1

Quando executo um script de shell no bash, eu envio tudo para um arquivo da seguinte forma:

./ script.sh > results.txt

Alguns dos comandos do meu script são enviados para o terminal, em vez do arquivo de texto.

Por exemplo, a linha cmd "ssh -V" saídas para o terminal.

O que posso fazer para obter os resultados no arquivo results.txt?

    
por Eigen 30.06.2015 / 22:06

2 respostas

2

O stderr não é redirecionado para o arquivo. Muito provavelmente você precisa

./script.sh > results.txt 2>&1

para redirecionar ambos para results.txt. Note que

./script.sh 2>&1 >results.txt

é algo diferente, pois redireciona stdout para file e stderr para o stdout não redirecionado. E é claro que você pode substituir &1 por um nome de arquivo diferente.

Se você está usando bash você vai se safar com

./script.sh &>results.txt

Não que em todos os casos não seja garantido que a stdout / stderr entrelaçada esteja na mesma ordem que no console. Isso funcionará para tudo, não apenas para scripts bash.

    
por 30.06.2015 / 22:20
0

Certifique-se de redirecionar a saída all para o arquivo de texto.

  • stdout com >
  • stderr com 2>

Veja mais aqui e aqui .

Observe que o script deve começar com:

#!/bin/bash 
    
por 30.06.2015 / 22:09