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
Skriv ut Feil med angitt kommando Shribigb Shell programmering og Skripting 0 03-06-2009 06:08
tar feil avkjørsel forsinket form pervious feil chayato Linux 1 02-06-2009 12:07
I ksh shell kommando - Skriv ut "-ABC" gir feil sagarjani Shell programmering og Skripting 2 10-08-2008 04:32
Tilpasset feilside når hannkatt godkjenning mislykkes sebagra UNIX og Linux-applikasjoner 0 05-06-2008 05:10
på kommandoen mislykkes a329743 UNIX for Advanced & ekspertbrukere 1 10-05-2006 10: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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 04-23-2009
lavascript lavascript is offline
Registrert bruker
  
 

Bli Dato: april 2009
Innlegg: 47
Hvordan du skriver ut feil og avslutte hvis kommandoen mislykkes?

Fyrene noen tips om hvordan du skriver ut en feilmelding til stderr og spennende bør kommandoen mislykkes i en ksh script? Jeg prøver å null noen utdatafiler.

Touch er ikke egnet som jeg trenger å null dem.
print "">-filen er ikke egnet som jeg må sjekke elsehere for hvis de 0bytes eller ikke.

Jeg har prøvd disse nedenfor eksempler og ingen fungere riktig. Jeg ønsker ikke å sette et merke etter hver kommando som: --

Code:
if [[ $? -ne 0 ]];then
   print "error blah blah" >&2
   exit 2
fi
Under testene fungerer ikke riktig. Jeg gjetter sin gyting noe.

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
Noen ideer eller alternativer?
  #2 (permalink)  
Old 04-23-2009
EagleFlyFree EagleFlyFree is offline
Registrert bruker
  
 

Bli Dato: april 2009
Innlegg: 13
Spesifikt om rapportering og spennende, dette er en litt mer kondensert idiom:

Code:
test $condition || { print "Crap blew up; exiting"; exit 2; }
Du kan også teste resultatet av kommandoen:

Code:
command || { print "Crap blew up; exiting"; exit 2; }
Jeg liker å lese det høyt for meg selv som "enten du gjør dette eller dø!", Som om threathening skriptet.

Sist endret av EagleFlyFree; 04-23-2009 på 02:17..
  #3 (permalink)  
Old 04-23-2009
lavascript lavascript is offline
Registrert bruker
  
 

Bli Dato: april 2009
Innlegg: 47
Takk dude dvs virket som en sjarm.

Synes jeg var nesten ferdig, men ikke brukte den riktige ()

Kan du forklare forskjellen mellom () og () i kommandoen gruppering? Også i notied det; på slutten før) er vitally viktig ellers neste kommandoen ikke fungerer.

eg

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
Registrert bruker
  
 

Bli Dato: april 2009
Innlegg: 13
() Utfører utsagn i et nytt subshell, med egen stat. () Utfører ting i gjeldende shell.

Eksempel:

Code:
(aVariable="hello"); echo $aVariable
dette ikke skrive ut "Hei", fordi variabel ble tildelt i et nytt skall, hvis staten ble forkastet da () uttrykk avsluttet. Tenk på variabelen scoping i C; variabler leve og dø i blokken hvor de er deklarert.

Code:
{aVariable="hello"; }; echo $aVariable
Dette skriver "Hei", fordi variabel ble tildelt i samme skall som neste setningen.

Det er den samme forskjellen som:
Code:
sh myScript.sh
og
Code:
source myScript.sh


Og ja, du trenger et semikolon for å avslutte den siste setningen i (), som er hvordan Shells grammatikk er definert.
Type hvor du enten kan gjøre dette:
Code:
if $condition; then $statements; fi
eller, med newlines istedenfor semikolon for å skille syntaks deler:
Code:
if $condition
then
    $statements
fi
Ifølge bash mann siden den er forskjellig fra (), fordi (og) er reservert ord istedenfor metategn, som betyr at de ikke automatisk føre ordet pausene. Antagelig det samme gjelder i resten av shells.

Sist endret av EagleFlyFree; 04-23-2009 på 02:14..
  #5 (permalink)  
Old 04-24-2009
lavascript lavascript is offline
Registrert bruker
  
 

Bli Dato: april 2009
Innlegg: 47
Dude dvs virkelige store og informative svar. Thanks a lot. Dens absolutt gi meg en bedre forståelse av skallet i stedet for bare å prøve ting før de fungerer
  #6 (permalink)  
Old 04-24-2009
EagleFlyFree EagleFlyFree is offline
Registrert bruker
  
 

Bli Dato: april 2009
Innlegg: 13
Ikke nevne det, jeg elsker yapping om bash.
Sin mann siden er lang og skremmende, men flick gjennom den hver gang imellom; du er bundet til å lære store ting hver gang.
Delene om historie og readline er særlig kult, og de er nyttige og morsomme å bruke.
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 11:11.


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