Escrevendo entrada do usuário para arquivo usando tee

0

Eu tenho um script que guia os usuários através da instalação do meu software e eu quero escrever um arquivo de log no caso de algo ruim acontecer e o usuário precisar de suporte.

O script é assim:

while true; do
  echo "This script will help you with the installation. Do you wish to proceed?"
  echo "(1) Yes"
  echo "(2) No"
  read proceed
  case $proceed in
    1 ) break;;
    * ) echo "Aborting."; exit 8;;
  esac
done
unset proceed

Eu, então, o executo usando ./install.ksh | tee /var/log/myinstall.log e tudo funciona bem, mas a entrada do usuário para a pergunta não está registrada. Quando eu adiciono echo $proceed após o comando read , ele é gravado no log, mas exibido duas vezes, assim:

This script will help you with the installation. Do you wish to proceed?
(1) Yes
(2) No
1 #this is the input which is not written to the log
1 # this is the echo which is written to the log

Minha pergunta agora é como eu poderia suprimir a saída do comando read ou como eu poderia escrever o echo apenas no arquivo mas não no STDOUT?

    
por Patrick 13.03.2018 / 15:41

1 resposta

1

Você deve usar script em vez disso, ele é projetado exatamente para esse propósito:

script /var/log/myinstall.log -c ./install.ksh

Ele registrará a entrada para read , assim como qualquer saída.

    
por 13.03.2018 / 15:56