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
Print Fout met set commando Shribigb Programmeren en Shell Scripting 0 03-06-2009 06:08 PM
tar fout afrit vertraagd vorm doordringbaar fout chayato Linux 1 02-06-2009 12:07 AM
In ksh shell commando - Print "ABC" geeft fout sagarjani Programmeren en Shell Scripting 2 10-08-2008 05:32 PM
Aangepaste foutpagina wanneer tomcat authenticatie mislukt sebagra UNIX-en Linux-toepassingen 0 05-06-2008 06:10 PM
op commando mislukt a329743 UNIX for Advanced & Expert Gebruikers 1 10-05-2006 11:08

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 04-23-2009
lavascript lavascript is offline
Geregistreerde gebruiker
  
 

Join Date: april 2009
Posts: 47
Hoe print fout en verlaten als commando mislukt?

Jongens enige tips voor het afdrukken van een bepaalde fout bericht naar stderr en verlaten moet een opdracht niet binnen een ksh script? I'm trying to null enkele output-bestanden.

Touch is niet geschikt als ik moet nietig hen.
print ""> bestand is niet geschikt als ik nodig om te controleren elsehere voor als ze 0bytes of niet.

Ik heb geprobeerd deze hieronder voorbeelden en geen correct werken. Ik wil niet hebben om een controle na elke opdracht als: --


Code:
if [[ $? -ne 0 ]];then
   print "error blah blah" >&2
   exit 2
fi

Hieronder de tests niet goed werken. I'm guessing haar kuitschieten iets.


Code:
OUTFILE=/tmp/out

# Null outfiles. Security already checked

> ${OUTFILE} || print "ERROR: blah blah \n" >&2 ; exit 2   #doesnt work

> ${OUTFILE} || (print "ERROR: blah blah \n" >&2 ; exit 2 )  #doesn't work

> ${OUTFILE} || (print "ERROR: blah blah \n" >&2 && exit 2) #doesnt work

if [[ -n "$(> ${OUTFILE} 2>&1)" ]];then
     print "ERROR: blah blah \n" >&2
     exit 2
fi    # doesnt work

Ideeën of alternatieven?
  #2 (permalink)  
Old 04-23-2009
EagleFlyFree EagleFlyFree is offline
Geregistreerde gebruiker
  
 

Join Date: april 2009
Posts: 13
Specifiek over de rapportage en verlaten, dit is een iets meer gecondenseerde idioom:


Code:
test $condition || { print "Crap blew up; exiting"; exit 2; }

Je kan ook rechtstreeks test voor het resultaat van uw opdracht:


Code:
command || { print "Crap blew up; exiting"; exit 2; }

Ik geniet van het lezen van dat hardop tegen mezelf als "als je dit doen of sterven!", Alsof threathening het script.

Laatst gewijzigd door EagleFlyFree; op 04.23.2009 03:17 PM..
  #3 (permalink)  
Old 04-23-2009
lavascript lavascript is offline
Geregistreerde gebruiker
  
 

Join Date: april 2009
Posts: 47
Thanks dude thats werkte als een charme.

Lijkt Ik was er bijna, maar geen gebruik maken van de juiste ()

Kunt u uitleggen van het verschil tussen () en () in de opdracht groepering? Ook de i notied; aan het einde voordat) is van vitaal belang omdat anders de volgende commando werkt niet.

bv


Code:
This works and exits if cant null but echos got to here if can.

> ${OUTFILE} || { print "ERROR: cannot null output file. Exiting\n" >&2; exit 2; }
> ${TMPFILE} || { print "ERROR: cannot null tmp file. Exiting\n" >&2; exit 2; }

echo "got to here"

This doesnt work and never gets to echo even if null is successful

> ${OUTFILE} || { print "ERROR: cannot null output file. Exiting\n" >&2; exit 2 }
> ${TMPFILE} || { print "ERROR: cannot null tmp file. Exiting\n" >&2; exit 2 }

echo "got to here"

  #4 (permalink)  
Old 04-23-2009
EagleFlyFree EagleFlyFree is offline
Geregistreerde gebruiker
  
 

Join Date: april 2009
Posts: 13
() Voert de verklaringen in een nieuw subshell, met aparte staat. () Voert spul in de huidige shell.

Voorbeeld:


Code:
(aVariable="hello"); echo $aVariable

dit wordt niet afgedrukt "hallo", omdat de variabele was ondergebracht in een nieuwe shell, wiens toestand werd weggegooid wanneer de () expressie beëindigd. Denk aan variabele scopingprocedure in C; variabelen leven en sterven in het blok waar ze zijn opgegeven.


Code:
{aVariable="hello"; }; echo $aVariable

deze prenten "hallo", omdat de variabele werd toegewezen in dezelfde schaal als de volgende verklaring.

Het is hetzelfde verschil als:

Code:
sh myScript.sh

en

Code:
source myScript.sh



Ook, ja, hebt u een puntkomma om de laatste verklaring binnen (); dat is hoe het reservoir van de grammatica is gedefinieerd.
Kind of hoe kunt u dit doen:

Code:
if $condition; then $statements; fi

of deze, met behulp van nieuwe regels in plaats van puntkomma's te scheiden van de syntax delen:

Code:
if $condition
then
    $statements
fi

Volgens de bash man pagina's, het is verschillend van (), omdat (en) zijn gereserveerde woorden in plaats van metatekens, wat betekent dat zij niet automatisch leiden tot woord breekt. Vermoedelijk geldt hetzelfde in de rest van de schelpen.

Laatst gewijzigd door EagleFlyFree; op 04.23.2009 03:14 PM..
  #5 (permalink)  
Old 04-24-2009
lavascript lavascript is offline
Geregistreerde gebruiker
  
 

Join Date: april 2009
Posts: 47
Dude dat is echt geweldig en een informatieve antwoord. Thanks a lot. Zijn zeker dat ik een beter begrip van het reservoir niet alleen maar proberen dingen totdat ze werken
  #6 (permalink)  
Old 04-24-2009
EagleFlyFree EagleFlyFree is offline
Geregistreerde gebruiker
  
 

Join Date: april 2009
Posts: 13
Het mag geen naam hebben, ik hou van gekef over bash.
Haar man pagina is lang en ontmoedigend zijn, maar film via het elke keer in een tijd, u bent verplicht om te leren groot TidBITS elke keer.
De delen over de geschiedenis en readline zijn cool, en ze zijn handig en leuk om te gebruiken.
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 11:40 PM.


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