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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[shell-script] Formatação nos scripts


From: Renato Machado
Subject: [shell-script] Formatação nos scripts
Date: Sun, 3 Aug 2008 08:16:09 -0700 (PDT)



olá amigos...
este tema provocou um saudável fluxo de sugestões...
acabei fazendo algumas buscas e eis que encontrei algo
que talvez sirva para cada vez mais melhorarmos nosso estilo,
buscando sempre um código clean, profissa...  ;)
Pois como diria Vinícius: "a beleza é fundamental".
Vejam que legal...
 
Créditos: http://codare.net/category/shell/
 
Shell: Agrupar comandos para log
Ao fazer log da execução de um programa ou compor um arquivo de texto que 
agrupe a saída de vários comandos, é comum ver a seguinte estrutura ser 
utilizada:comando-1 >> arquivo
comando-2 >> arquivo
comando-3 >> arquivo

Tudo bem, isso funciona. Mas há uma maneira mais prática e eficiente de se 
fazer o mesmo, que é agrupar todos os comandos e redirecioná-los para o arquivo 
de log uma única vez:(comando-1 ; comando-2 ; comando-3) >> arquivo

Basta colocar todos os comandos dentro de um par de parênteses 
para que o shell os encare como um grupo único.
Veja um exemplo da aplicação dessa técnica e 
perceba uma outra vantagem: o script fica mais legível.
 
Log Ineficiente
echo "Iniciando em $(date)"  >> /tmp/log.txt
rm -vr /tmp/becape/* >> /tmp/log.txt
~/bin/meu-becape.sh --tudo >> /tmp/log.txt
echo "Tamanho do becape: $(du -hs /tmp/becape)" >> /tmp/log.txt
echo "Terminado em $(date)" >> /tmp/log.txt

Log Eficiente
(
echo "Iniciando em $(date)"
rm -vr /tmp/becape/*
~/bin/meu-becape.sh --tudo
echo "Tamanho do becape: $(du -hs /tmp/becape)"
echo "Terminado em $(date)"
) >> /tmp/log.txt
 
simples assim ? AFFFF... KISS na veia...vou reescrever muito... :(
algum mestre pode apontar algum efeito colateral desastroso desta técnica ?
Obrigado.
 
RMachado



      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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