The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Come controllare percorso non esiste o script di shell UNIX suneelc UNIX for Dummies Domande & Risposte 3 01-22-2008 08:36 AM
Necessità di script per controllare il file esiste e confrontare rbknisely UNIX for Dummies Domande & Risposte 1 01-16-2008 01:08 AM
come verificare se directory / file esistenti utilizzando c / c + + steven88 Di programmazione ad alto livello 2 01-03-2006 02:55 AM
come verificare se directory / file esistenti utilizzando c / c + + steven88 Shell scripting e di programmazione 1 01-02-2006 10:45 PM
come verificare se il file esiste o no? gusla UNIX for Dummies Domande & Risposte 3 03-27-2002 10:56 PM

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 Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 11-12-2006
heprox heprox is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2005
Posti: 32
Question Sono uno script di shell per verificare l'esistenza di un file prima di elaborare un altro file

Ho uno script di shell che gira tutto il tempo alla ricerca di un certo tipo di file e quindi i processi che il file attraverso una serie di altri script. Lo script è la visione di un elenco che ha caricato i file ad esso tramite SFTP. E 'già controlla la dimensione del file per assicurarsi che non è ancora prima di iniziare il caricamento di trasformazione. Vorrei effettuare il check-in un altro posto lo script che si occupa per l'esistenza di un altro file inizia prima della trasformazione. Lo script si presenta come:


Codice:
#!/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

... Vorrei verificare la presenza di un file in / passeggeri / genret / tmp / poll_ ####. txt (dove "####" è la variabile $ fileExtension. Credo che il file di verifica deve essere in "principali" sezione prima che invia il file alla "is_file_arrived" la funzione? I'f vi è un "poll_ ####. txt" file presenti vorrei solo lo script per spostarsi sul file successivo e guardare ancora più tardi. Ciò eviterebbe due file dello stesso tipo di trattamento allo stesso tempo. Sto pensando qualcosa come un "se-allora"?
  #2 (permalink)  
Old 11-13-2006
aigles's Avatar
Aigles aigles is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: aprile 2004
Località: Bordeaux, Francia
Messaggi: 1.429
È possibile fare qualcosa di simile a questo:

Codice:
   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
Utente Registrato
  
 

Iscriviti Data: luglio 2005
Posti: 32
Hai perso me ....

Perdonate la mia ignoranza, così come il bracketing "a un" lavoro?


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

... per verificare che il file "poll_" e, se ritenuto fermarsi e passare sopra il file successivo? Sono confuso come funziona?
  #4 (permalink)  
Old 11-14-2006
aigles's Avatar
Aigles aigles is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: aprile 2004
Località: Bordeaux, Francia
Messaggi: 1.429
Il codice seguente è equivalente:

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

Se il file esiste pooll_, poi riprendere la prossima iterazione del ciclo for (procedere file successivo).


Jean-Pierre.
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 06:41 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0