Eu tenho um script que orienta os usuários durante a instalação do meu software e quero escrever um arquivo de log caso algo ruim aconteça e o usuário precise de suporte.
O script fica 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
Em seguida, executo-o usando ./install.ksh | tee /var/log/myinstall.log
e tudo funciona bem, mas a entrada do usuário para a pergunta não é registrada. Quando adiciono echo $proceed
após o read
comando, 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 read
comando ou como eu poderia escrever echo
apenas no arquivo, mas não no STDOUT?
Você deve usar
script
em vez disso, ele foi projetado exatamente para essa finalidade:Ele registrará a entrada
read
, bem como qualquer saída.