shell-script-pt
[Top][All Lists]
Advanced

[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-----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]