[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: script iterativo / passo a passo
From: |
MrBiTs |
Subject: |
Re: [shell-script] Re: script iterativo / passo a passo |
Date: |
Tue, 13 May 2008 08:07:37 -0300 |
User-agent: |
Thunderbird 2.0.0.14 (X11/20080505) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
| Penso que a melhor abordagem seria fazer vários scripts (ou funções) onde
| cada uma faz somente uma parte da tarefa.
| Um script só pros downloads, um script pra cada configure e etc.
| Não tenha medo/vergonha de usar arquivos em disco como locais temporários
| para armazenar saída de comandos ("./configure > /tmp/bla") . Você pode
| analisá-los com grep depois e decidir qual o próximo passo a tomar baseado
| nos padrões que encontrar lá.
| E se alguns passos são demorados e você não sabe quem vai executar esse
| script no futuro, coloque mensagens na tela bem claras. Algo como "ESTE
| PASSO DEMORA UM BOCADO. NAO CANCELE!" .
No caso específico do ./configure, deve-se notar que ele já gera um arquivo
config.log que pode ser analisado depois.
Em meus scripts eu utilizo algo como:
SCRIPTNAME=$(basename $0 .sh)
TIMESTAMP=`date +%H%M%S`
TRACEFILE=z2_${SCRIPTNAME}.trc
if [ -f "${TRACEFILE}" ]; then
~ echo "Moving existing file to ${TRACEFILE}_${TIMESTAMP}"
~ mv $TRACEFILE ${TRACEFILE}_${TIMESTAMP}
fi
echo "Trace File: ${TRACEFILE}"
exec 1>> ${TRACEFILE} 2>&1
Isso fará com que a execução do script seja automaticamente enviada para um log.
Associo a isso uma opção de debug ou verbose, através do getopts, mais ou menos
assim:
DEBUG=0
while getopts d:yiv OPTION ; do
case ${OPTION} in
d)
;;
y)
;;
i)
;;
v)
DEBUG=1
;;
esac
done
e testo a variável DEBUG
if [ ${DEBUG} -eq 1 ]; then
set -x
fi
E, como bem citado, mensagens para o usuário final são importantíssimas.
- --
Um abraço
0. MrBiTs - address@hidden
.0 GnuPG -
http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 http://www.mrbits.com.br (under construction)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFIKXZ5rDdxWm3R8YYRAg8FAJoCVuoXl+NVt0hgGFjSh5acqXDxjwCdHbaq
g/Fg48+O9vJInkld+Ih4f0U=
=Ab+r
-----END PGP SIGNATURE-----