The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Slik kontrollerer banen finnes eller ikke i UNIX shell script suneelc UNIX for Dummies Spørsmål og svar 3 01-22-2008 08:36
Trenger Script for å kontrollere filen eksisterer og sammenligne rbknisely UNIX for Dummies Spørsmål og svar 1 01-16-2008 01:08
hvordan du sjekker om katalog / fil eksisterer bruker C / C + + steven88 High Level Programmering 2 01-03-2006 02:55
hvordan du sjekker om katalog / fil eksisterer bruker C / C + + steven88 Shell programmering og Skripting 1 01-02-2006 10:45
hvordan du sjekker om filen eksisterer eller ikke? gusla UNIX for Dummies Spørsmål og svar 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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 11-12-2006
heprox heprox is offline
Registrert bruker
  
 

Bli Dato: juli 2005
Innlegg: 32
Question Har et shell script se etter en fil å eksistere før du behandler en annen fil

Jeg har et shell script som kjøres hele tiden ser etter en bestemt filtype, og den behandler filen gjennom en rekke andre scripts. Skriptet ser på en katalog som har filer som lastes opp til det via SFTP. Den kontrollerer allerede størrelsen på filen for å påse at det ikke er fortsatt opp før den starter behandling. Jeg ønsker å plassere et annet sjekke inn skriptet som ser for eksistensen av en annen fil før behandlingen begynner. Skriptet ser slik ut:

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
... Jeg vil gjerne se etter en fil i / Gers / genret / tmp / poll_ ####. txt (der "####" er $ fileExtension variabelen. Jeg tror filen sjekk bør være i "Main Processing" delen før den sendes til den filen til "is_file_arrived"-funksjonen? I'f det er en "poll_ ####. txt" file presentere Jeg vil i likhet med skript til å flytte på neste fil og se på det igjen senere. Dette vil hindre at to filer av samme type behandling samtidig. Jeg tenker noe sånt som en "hvis-da"?
  #2 (permalink)  
Old 11-13-2006
aigles's Avatar
aigles aigles is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: april 2004
Sted: Bordeaux, Frankrike
Innlegg: 1420
Du kan gjøre noe som dette:
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
Registrert bruker
  
 

Bli Dato: juli 2005
Innlegg: 32
You lost me ....

Tilgi min uvitenhet, så hvordan skulle bracketing på "-a" work?

Code:
[[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]] && continue
... det ville se etter filen "poll_" og hvis det finnes det stoppe der og flytter til neste fil? Jeg forstår ikke helt hvordan dette fungerer?
  #4 (permalink)  
Old 11-14-2006
aigles's Avatar
aigles aigles is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: april 2004
Sted: Bordeaux, Frankrike
Innlegg: 1420
Følgende kode er ekvivalent:
Code:
if [[ -a /gers/genret/tmp/poll_$fileExtension.txt  ]]
then
   continue
fi
Hvis filen pooll_ eksisterer, og gjenoppta den neste runden av for løkke (fortsett neste fil).


Jean-Pierre.
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 06:40.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0