![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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? |
|
||||
|
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.. |
|
||||
|
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"
|
|
||||
|
() 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.. |
|
||||
|
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. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|