The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Hoe om te controleren pad bestaat of niet in Unix shell script suneelc UNIX voor Dummies Questions & Answers 3 01-22-2008 08:36
Script nodig om te controleren bestand bestaan en vergelijken rbknisely UNIX voor Dummies Questions & Answers 1 01-16-2008 01:08
hoe om te controleren of map / bestand bestaat met c / c + + steven88 Hoog Niveau Programmering 2 01-03-2006 02:55
hoe om te controleren of map / bestand bestaat met c / c + + steven88 Programmeren en Shell Scripting 1 01-02-2006 10:45 PM
hoe om te controleren of het bestand bestaat of niet? gusla UNIX voor 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-12-2006
heprox heprox is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2005
Posts: 32
Question Hebben een shell script te controleren of een bestand te bestaan voor de verwerking van een ander bestand

Ik heb een shell script dat de hele tijd op zoek naar een bepaald type bestand wordt uitgevoerd en vervolgens verwerkt het bestand door een reeks van andere scripts. Het script is het kijken naar een map die bestanden heeft geüpload naar het via SFTP. Het programma controleert nu al de grootte van het bestand om ervoor te zorgen dat deze nog steeds aan het uploaden is voordat hij begint de verwerking. Ik wil de plaats nog een vinkje in het script dat wordt gezocht naar het bestaan van een ander bestand voordat de verwerking wordt begonnen. Het script ziet er als volgt uit:


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

... Ik wil graag om te controleren of een bestand in / gers / genret / tmp / poll_ ####. txt (waar "####" is de $ fileExtension variabele. Ik denk dat controleren of het bestand moet worden in de "Belangrijkste Processing" sectie voor deze stuurt het bestand naar de "is_file_arrived" functie? I'f is er een "poll_ ####. txt" bestand aanwezig wil ik het script door te gaan naar het volgende bestand en kijken het later opnieuw. Dit zou twee bestanden van hetzelfde type verwerking voorkomen op hetzelfde moment. Ik denk zoiets als een 'als-dan "?
  #2 (permalink)  
Old 11-13-2006
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.433
Je kan zoiets als dit:

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
Geregistreerde gebruiker
  
 

Join Date: juli 2005
Posts: 32
Je hebt verloren me ....

Vergeef mijn onwetendheid, dus hoe zou bracketing de "-een" werk?


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

... het zou controleren op het bestand "poll_" en als hij vond het daar te stoppen en gaan naar de volgende file? Ik weet niet precies hoe dit werkt?
  #4 (permalink)  
Old 11-14-2006
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.433
De volgende code is gelijk aan:

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

Als het bestand pooll_ bestaat, dan weer de volgende iteratie van de lus (ga volgend bestand).


Jean-Pierre.
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 06:45.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0