The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Como caminho para verificar a existência ou não em UNIX shell script suneelc UNIX para Dummies Perguntas & Respostas 3 01-22-2008 08:36
Script para verificar a necessidade arquivo existe e comparar rbknisely UNIX para Dummies Perguntas & Respostas 1 01-16-2008 01:08
como verificar se diretório / arquivo existe usando C / C + + steven88 Alto Nível de programação 2 01-03-2006 02:55
como verificar se diretório / arquivo existe usando C / C + + steven88 Programação Shell Script e 1 01-02-2006 10:45
como verificar se o arquivo existe ou não? gusla UNIX para Dummies Perguntas & Respostas 3 03-27-2002 10:56

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-12-2006
heprox heprox is offline
Usuário
  
 

Join Date: Jul 2005
Lugares: 32
Question Tenha um shell script para verificar um arquivo de existir antes da transformação de um outro arquivo

Eu tenho um script que gere o tempo todo olhando para um determinado tipo de arquivo e, em seguida, ele processa o arquivo através de uma série de outros scripts. O script está assistindo a um diretório que tem arquivos enviados para ele via SFTP. Já verifica o tamanho do arquivo para ter certeza de que ele ainda não está carregando antes de começar a transformação. Eu gostaria de colocar um outro cheque no script que olha para a existência de um outro arquivo antes da transformação começa. O script é algo parecido com:


Código:
#!/bin/ksh
PATH=/gers/nurev/menu/pub/sbin:/gers/nurev/menu/pub/bin:/gers/nurev/menu/pub/mac
:/gers/nurev/menu/adm/sbin:/gers/nurev/menu/adm/bin:/gers/nurev/menu/adm/mac:/ge
rs/nurev/custom:/gers/nurev/fix:/gers/nurev/src_rev/fix:/gers/nurev/opt/path:/ge
rs/nurev/bin:/g/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/sbin:.
ORACLE_HOME=/gers/nurev
ORACLE_SID=nurev
export PATH
export ORACLE_HOME
export ORACLE_SID
 
#
# Function : is_file_arrived file
# Arg(s)   : file = file to verify
# Output   : None
# Status   : 0 = yes file arrived, 1 = no
# Env.     : IFA_WAIT : interval (secs) for file size check (def=5)
#
 
is_file_arrived() {
   [ -z "$1" ] && return 1
   local file=$1
   local arrived=1
   local size1 size2
   if [ -f "$file" -a -z "$(fuser $file 2> /dev/null)" ] ; then
      size1=$(ls -l $file 2>/dev/null | awk '{print $5}')
      sleep ${IFA_WAIT:-15}
      size2=$(ls -l $file 2>/dev/null | awk '{print $5}')
      [ ${size1:-1} -eq ${size2:-2} ] && arrived=0
   fi
   return $arrived
}
 
 
processFile ()
{
   local fileName=$1
   local fileExtension=$2
   local fileNewName="/gers/nurev/datafiles/str${fileExtension}.asc"
   local filePrintPath="/gers/nurev/print"
   local fileTmpPath="/gers/nurev/tmp"
   local fileODIName="str${fileExtension}.pos"
   mv -Eignore $fileName $fileNewName     
   prepup $fileNewName $fileExtension
   mv -Eignore  $filePrintPath/$fileODIName $fileTmpPath/$fileODIName
   save2tmp $fileExtension
   call_siu $fileExtension
}
 
# Main Processing
 
nsec=1
while [[ "$(date +%H%M)" -lt 2329 ]]
do
   for fileName in /gers/nurev/datafiles/[Uu][Pp][Ll][Oo][Aa][Dd].[0-9][0-9][0-9
][0-9]
   do
      fileExtension=${fileName#*.}
      is_file_arrived "$fileName" && nsec=1 && processFile $fileName $fileExtension
   done
   sleep $nsec
   case $nsec in
      1)   nsec=15;;
      15)  nsec=45;;
      45)  nsec=90;;
      90)  nsec=300;;
      300) nsec=600;;
      600) nsec=900;;
      *)   nsec=1800;;
   esac
done

... Eu gostaria de verificar para um arquivo em / Gers / genret / tmp / poll_ ####. txt (onde "####" é a variável $ fileExtension. Acho que o arquivo deve ser em cheque a "Main Processing" secção antes de envia-lo para o arquivo para o "is_file_arrived" função? I'f existe uma "poll_ ####. txt" arquivo presente gostaria apenas o script para mover para o próximo arquivo e olhar -lo novamente mais tarde. Isto impediria dois arquivos do mesmo tipo de transformação, ao mesmo tempo. Estou pensando algo como uma "se-então"?
  #2 (permalink)  
Old 11-13-2006
aigles's Avatar
aigles aigles is offline Forum Advisor  
Usuário
  
 

Join Date: Apr 2004
Location: Bordeaux, França
Mensagens: 1.429
Você pode fazer algo parecido com isto:

Código:
   for fileName in /gers/nurev/datafiles/[Uu][Pp][Ll][Oo][Aa][Dd].[0-9][0-9][0-9
][0-9]
   do
      fileExtension=${fileName#*.}
      [[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]] && continue
      is_file_arrived "$fileName" && nsec=1 &&       processFile $fileName $fileExtension
   done

Jean-Pierre.
  #3 (permalink)  
Old 11-13-2006
heprox heprox is offline
Usuário
  
 

Join Date: Jul 2005
Lugares: 32
Perdeu-me ....

Perdoem a minha ignorância, seria assim como o bracketing "-um" trabalho?


Código:
[[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]] && continue

... que seria para verificar o arquivo "poll_" e se ele achou parar lá e passar para o próximo arquivo? Estou confuso como isso funciona?
  #4 (permalink)  
Old 11-14-2006
aigles's Avatar
aigles aigles is offline Forum Advisor  
Usuário
  
 

Join Date: Apr 2004
Location: Bordeaux, França
Mensagens: 1.429
O código a seguir é equivalente:

Código:
if [[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]]
then
   continue
fi

Se o arquivo pooll_ existe, então retomar a próxima iteração do ciclo for (proceder próxima imagem).


Jean-Pierre.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 09:40.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0