The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Fejl med hvis erklæring .. Please help jisha Shell Programmering og Scripting 1 01-16-2008 07:13 AM
mens læse loop w / a nested hvis erklæring - ikke behandler hver indrejse individuelt littlefrog Shell Programmering og Scripting 7 12-11-2007 09:49 PM
hvis erklæring i et stykke tid loop Bobo UNIX for dummyer Spørgsmål & svar 2 11-07-2006 12:38 PM
hvis erklæring for loop af en streng Sniper Pixie UNIX for dummyer Spørgsmål & svar 7 03-02-2006 07:28 AM
tar fejl erklæring Legato UNIX for dummyer Spørgsmål & svar 3 03-29-2005 09:58 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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 09-19-2007
lumdev lumdev is offline
Registreret Bruger
  
 

Join Date: Sep 2006
Location: Belgien
Stillinger: 6
For loop erklæring - fange fejl

Jeg har et spørgsmål om for sløjfer. (bash)

Jeg har således for eksempel:

til filen i `ls *. txt«
gøre
læs fil ...
gjort

Nu hvor der er en fil nuværende tidspunkt er der ikke noget problem, nu når der ikke er nogen fil til stede, jeg får følgende output i min standard mail boks: "Ingen sådan fil eller mappe" Script eksekveres via crontab.

Nu ønsker jeg at fange de ovennævnte fejl, så jeg ikke får det i min mail mere, men jeg har ingen idé om, hvordan du gør dette.

Jeg kan gøre en hvis erklæring første "hvis [-f *. txt] ...", men der skal være en bedre løsning.

Thx.
  #2 (permalink)  
Old 09-19-2007
ajcannon ajcannon is offline
Registreret Bruger
  
 

Join Date: Aug 2007
Beliggenhed: Binfield, Berkshire. UK
Stillinger: 91
hvis

Jeg tror, at brugen af »hvis« erklæring er en helt fornuftig løsning. Du skal bruge en eller anden form, hvis betinget erklæring at fastslå, om ikke din fil, og en »hvis« ville være OK
  #3 (permalink)  
Old 09-19-2007
porter porter is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Jan 2007
Stillinger: 2965
Citat:
Oprindeligt Indsendt af lumdev View Post
Jeg kan gøre en hvis erklæring første "hvis [-f *. txt] ...", men der skal være en bedre løsning.
Kontroller, om den faktiske fil i sløjfe

Code:
  for file in *.txt
  do
     if test -f $file
     then
        read file ...
     fi
  done
  #4 (permalink)  
Old 09-19-2007
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmør, forfatter
  
 

Join Date: Mar 2007
Beliggenhed: Toronto, Canada
Stillinger: 2361
Citat:
Oprindeligt Indsendt af lumdev View Post
Jeg har et spørgsmål om for sløjfer. (bash)

Jeg har således for eksempel:

til filen i `ls *. txt«

Det er ikke vejen til at sløjfe gennem filer. Ikke alene er ls unødvendigt, vil det ødelægge dit script eventuelle arkivnavne indeholde mellemrum eller andre patologiske tegn. Brug jokertegn direkte:

Code:
for file in *.txt
Citat:
gøre
læs fil ...
gjort

Nu hvor der er en fil nuværende tidspunkt er der ikke noget problem, nu når der ikke er nogen fil til stede, jeg får følgende output i min standard mail boks: "Ingen sådan fil eller mappe" Script eksekveres via crontab.

Nu ønsker jeg at fange de ovennævnte fejl, så jeg ikke får det i min mail mere, men jeg har ingen idé om, hvordan du gør dette.

Jeg kan gøre en hvis erklæring første "hvis [-f *. txt] ...", men der skal være en bedre løsning.

Nej, du kan ikke gøre det, det vil mislykkes, hvis der er mere end én. Txt-fil.

Du kan bruge en funktion:

Code:
is_file() {
   test -f "$1"
}

is_file *.txt &&
 for file in *.txt
 do
   ...
 done
Den sikreste måde er at kontrollere hver fil:

Code:
for file in *.txt
do
  [ -f "$file" ] || continue
  ...
done
  #5 (permalink)  
Old 09-20-2007
lumdev lumdev is offline
Registreret Bruger
  
 

Join Date: Sep 2006
Location: Belgien
Stillinger: 6
Thx for svarene.

Jeg brugte den løsning, der fungerer, nu jeg ikke får en "Ingen sådan fil eller mappe" output længere.

Thx for den hjælp cfajohnson.
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 08:06 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0