The UNIX and Linux Forums  

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Wie Sie Pfad vorhanden oder nicht im UNIX-Shell-Skript suneelc UNIX for Dummies Questions & Answers 3 01-22-2008 08:36 AM
Brauchen Sie Script-Datei zu überprüfen, gibt es und vergleichen rbknisely UNIX for Dummies Questions & Answers 1 01-16-2008 01:08 AM
Wie um zu überprüfen, ob das Verzeichnis / Datei gibt es mit C / C + + steven88 High-Level-Programmierung 2 01-03-2006 02:55 AM
Wie um zu überprüfen, ob das Verzeichnis / Datei gibt es mit C / C + + steven88 Shell Programmierung und Scripting 1 01-02-2006 10:45 PM
Wie um zu überprüfen, ob die Datei existiert oder nicht? gusla UNIX for Dummies Questions & Answers 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 11-12-2006
heprox heprox is offline
Registrierte Nutzer
  
 

Join Date: Jul 2005
Beiträge: 32
Question Haben Sie ein Shell-Skript prüfen, ob eine Datei existiert, bevor eine andere Datei

Ich habe ein Shell-Skript, das die ganze Zeit der Suche nach einer bestimmten Art von Datei-und IT-Prozesse, dann die Datei durch eine Reihe von anderen Skripten. Das Skript ist gerade ein Verzeichnis, das Dateien hochgeladen über SFTP. Es prüft bereits die Größe der Datei, um sicherzustellen, dass sie nicht mehr hochladen, bevor es beginnt die Verarbeitung. Ich möchte eine Prüfung, in dem Skript, das für die Existenz von einer anderen Datei vor der Verarbeitung beginnt. Das Skript sieht wie folgt aus:

Code:
#!/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
... Ich möchte prüfen, ob eine Datei in / Gers / genret / tmp / poll_ ####. txt (wo "####" ist die Variable $ FileExtension. Ich glaube, dass die Datei, sollte in der "Main Processing", bevor es an die Datei an den "is_file_arrived"-Funktion? I'f gibt es einen "poll_ ####. txt"-Datei vorliegenden Ich möchte das Skript, um auf die nächste Datei und schauen Sie auf es zu einem späteren Zeitpunkt erneut. Dies würde verhindern, dass zwei Dateien des gleichen Typs Verarbeitung in der gleichen Zeit. Ich denke so etwas wie eine "Wenn-dann"?
  #2 (permalink)  
Old 11-13-2006
aigles's Avatar
aigles aigles is online now Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Apr 2004
Ort: Bordeaux, Frankreich
Posts: 1428
Sie können etwas tun, wie diese:
Code:
   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
Registrierte Nutzer
  
 

Join Date: Jul 2005
Beiträge: 32
Sie haben mir ....

Verzeihen Sie meine Unkenntnis, ja, wie würde die Bracketing "-a" Arbeit?

Code:
[[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]] && continue
... es würde überprüfen, ob die Datei "poll_" und wenn er es dort anhalten und sich auf die nächste Datei? Ich bin verwirrt, wie das funktioniert?
  #4 (permalink)  
Old 11-14-2006
aigles's Avatar
aigles aigles is online now Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Apr 2004
Ort: Bordeaux, Frankreich
Posts: 1428
Der folgende Code entspricht:
Code:
if [[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]]
then
   continue
fi
Wenn die Datei pooll_ vorhanden ist, dann wieder die nächste Iteration der for-Schleife (weiter nächste Datei).


Jean-Pierre.
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 10:01 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0