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

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

RE: [shell-script] Ajuda para criar shell script


From: MrBiTs
Subject: RE: [shell-script] Ajuda para criar shell script
Date: Wed, 19 Jan 2005 10:26:41 -0200

<QUOTE>
Pessoal, tenho pouca experiência com shell-script, e meu encarredado me
pediu para montar um script conforme as informações abaixo...Sei que poderia
pesquisar e acabar montando o script, mas o problema é que ela quer isso
para ontem... 
Será que alguém poderia me ajudar? 
Este Script devera estar preparado para verificar a existencia do arquivo
/grelmao/MRP/pl0501.pro 
com o conteudo a informação "Processar:Sim" 
Caso exista verificar a existencia dos arquivos /grelmao/MRP/pl0501.par e
/grelmao/MRP/pl0501.sel  e caso os três arquivos existam deve processar a
parametrização abaixo: (essa parametrização está correta e conecta bancos
progress...o problema, é realmente fazer as condições acima.) 
echo "Inicio da geracao dos arquivos (`date`)" >> "$WORK"/pl0501.log 
$DLC/bin/_progres -b -p /magnus/plp/pl0501.p \ 
         -pf /amb/pf/db_grelmao.pf \ 
          -h 20 -l 48 -D 200 -e 100 -d dmy \ 
          -E -A < "$WORK"/pl0501.par >> "$WORK"/pl0501.log 
echo "Termino da geracao do arquivo (`date`) " >> "$WORK"/pl0501.log 
Ao Final do Processamento devera "Remover" os arquivos: 
/grelmao/MRP/pl0501.pro 
/grelmao/MRP/pl0501.par 
/grelmao/MRP/pl0501.sel 
O Arquivo /grelmao/MRP/pl0501.log contem informações dos dados informados
via 
parametros e servira para eventuais consultas. 
</QUOTE>

Chefe é uma coisa complicada :) O meu chefe, por exemplo... Dificil o
cara... Vacila demais... Opa... Oi Chefinho... Estava agora mesmo falando do
Sr... Bem, é claro :P

Vamos la.... Como em toda boa lingbobagem, vc vai ter estruturas de controle
e de testes em shell script, também. If's, while's, for's, case's da vida
sao comuns e muito simples.
Entao, todo o nosso processamento esta atrelado à existencia do arquivo
p10501.pro e seu conteudo Processar:Sim. Primeiro, vamos testar se ele
existe e se seu conteudo é o esperado:

 if [ -f /grelmao/MRP/p10501.pro ] ; then

Testamos a existencia do arquivo. O [ é o nosso link para test e -f pergunta
se o parametro passado é um arquivo valido. Se essa condicao for verdadeira,
testamos o conteudo dele:

 if grep "Processar:Sim" /grelmao/MRP/p10501.pro > /dev/null ; then

Aqui verificamos se o retorno de um comando grep é verdadeiro ( $? = 0 ).
ATENCAO ! Esse comando retornará verdadeiro somente se a string
Processar:Sim existir no arquivo. Se a string for Processar:SIM, o grep nao
vai retornar verdadeiro, a menos que seja especificada a opcao -i ( ignore
case ).
Isso sendo verdade, verificamos, com a mesma estrutura do primeiro if, se os
outros dois arquivos existem:

 if [ -f /grelmao/MRP/pl0501.par -a -f /grelmao/MRP/pl0501.sel ] ; then

Se p10501.par é um arquivo valido E p10501.sel também é um arquivo valido,
entao processamos. O trecho do script ficaria mais ou menos assim:

 if [ -f /grelmao/MRP/p10501.pro ] ; then
          if grep "Processar:Sim" /grelmao/MRP/p10501.pro > /dev/null ; then
                  if [ -f /grelmao/MRP/pl0501.par -a -f
/grelmao/MRP/pl0501.sel ] ; then
                        echo "Inicio da geracao dos arquivos (`date`)" >>
"$WORK"/pl0501.log 
                                $DLC/bin/_progres -b -p /magnus/plp/pl0501.p
\ 
                                 -pf /amb/pf/db_grelmao.pf \ 
                                  -h 20 -l 48 -D 200 -e 100 -d dmy \ 
                                  -E -A < "$WORK"/pl0501.par >>
"$WORK"/pl0501.log 
                                if [ $? -eq 0 ] ; then
                                        echo "Termino da geracao do arquivo
(`date`) " >> "$WORK"/pl0501.log 
                                        rm -f /grelmao/MRP/p10501.*
                                else
                                        echo "Erro no processamento"
                                fi
                  fi
          fi
 fi

Obviamente que faltam ai as definicoes das variaveis $DLC, $WORK mas, no
geral, essa é a logica que vc deve seguir.

[]'s



reply via email to

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