Ik wil weten wat exit 99 is en waarom je het zou gebruiken en wat de betekenis ervan is.
Bijvoorbeeld , Gebruik ik exit 99
.
Reacties
- Vrijwel vergelijkbaar antwoord als SO: " Waarom een negatieve fout retourneren? (Bijv. Return -EIO) "
Antwoord
Het heeft geen betekenis om af te sluiten met code 99, behalve misschien in de context van een specifiek programma.
Hoe dan ook, exit
verlaat de shell met een bepaalde exitcode, in dit geval 99. Je kunt meer informatie vinden in help exit
:
exit: exit [n] Exit the shell. Exits the shell with a status of N. If N is omitted, the exit status is that of the last command executed.
Reacties
- Als je wilt iets specifieks met een dergelijke retourcode in bash, gebruik de
$?
om erbij te komen. - Niet helemaal – 99 is niet nul, en dus indi geeft aan dat het programma om de een of andere reden is mislukt.
- @psusi Er zijn tal van afsluitcodes die niet gelijk zijn aan nul in toepassingen die niet met mislukking te maken hebben, maar die andere uitvoeringsvoorwaarden aangeven (veel programmas gebruiken het om of niet-optimale uitvoering in plaats van mislukking, bijvoorbeeld). Beweren dat een bepaalde exitstatus moet een fout aangeven zonder te weten dat het programma niet waar is. Ik heb ' t speculeren over de betekenis van " 99 " in een onbekend programma.
- De shell, en de meeste andere tools, inclusief make, behandelen elke exitwaarde die niet nul is als een fout.
- Behalve deze geven alleen mislukking afzonderlijk aan, niet in een grotere context van controle voor waarachtigheid. Hoe dan ook, ik weiger te speculeren over de betekenis van een afsluitcode wanneer de toepassing niet is gedefinieerd.
Antwoord
Naast @Chris Down is er een retourcode die gereserveerd is voor de shell, deze hebben een speciale betekenis:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Je kunt verwijzen naar this voor meer details.
Reacties
- @MrLister: Yeap, my mistypo, opgelost!
- er ontbreekt nog steeds een
s
daar (" Fout "?)
Antwoord
Normaal gesproken, als je je script op een bepaald moment afmaakt met:
exit 0
De shell krijgt een 0 als de retourcode . Deze nul betekent dat alles in orde was .
Als uw programma echter een fout heeft gevonden, kunt u moet afsluiten met een retourcode die niet nul is, om de shell te informeren dat er iets mis is gegaan. Als u niet specifieker wilt zijn, kunt u gewoon 1 gebruiken.
exit 1
U kunt de shell echter informeren over bepaalde soorten fouten door gebruik te maken van andere getallen. bash
retourneert zelf bijvoorbeeld een 127 voor programma niet gevonden . Dus als u het gedrag van uw script documenteert, kunt u iets nuttigs doen na het uitvoeren door de waarde van de speciale variabele $?
te controleren, die de retourcode van het laatst uitgevoerde programma bevat.
Ik heb dit een tijdje geleden bekeken en gevonden dat FreeBDS bijvoorbeeld een aantal zeer nuttige conventies had met betrekking tot afsluitcodes, gedocumenteerd in man 3 sysexits
Reacties
- " De shell krijgt een 0 als retourcode " fout,
exit
zonder parameters wordt afgesloten met de statuscode van de laatste uitgevoerde opdracht. (zie pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Dank je, al lang bestaande misvatting van de mijne, zal het antwoord oplossen.
- Geweldig, downvote verwijderd 🙂
Answer
Er is een zeer oude conventie (in Unix) voor statusbereiken:
- 0 betekent succes
- positieve getallen betekenen kleine problemen, maar in wezen is de voltooide taak
- negatieve getallen betekenen kritieke fout (bijv schijf vol, bestand niet gevonden)
Precies wat die individuele positieve en negatieve getallen betekenen, is aan de programmeur. Soms kunt u ze kiezen voor compatibiliteit met andere soortgelijke programmas (bijv.Gnu-tools). @Gnouc somt er enkele op.
Nee, ik “ben me niet bewust van de speciale betekenis van het afsluiten van code 99, heb het nooit gebruikt gezien. Misschien betekent het ” Niet genoeg bier “
Zie:
- antwoord op SO: “Waarom een negatieve fout retourneren? (bijv.return -EIO) “ ook
- toon lijst met standaard Unix-foutcodes die zijn opgehaald uit errno.h , hoewel deze positief zijn .
Opmerkingen
- Ik heb nog nooit van die Unix-conventie gehoord. En je twee referenties ondersteunen je bewering over die conventie niet.
- De eerste referentie wel. Er zijn 1,67 miljoen Google-hits op unix-retourstatus positieve negatieve getallen .
- Er is een klein aantal negatieve retourwaarden gespecificeerd in POSIX.1 maar deze zijn voor het programmeren van APIs
Answer
Sommige programmeurs zullen veel verschillende foutcodes leveren, beginnend met 1. Nieuwe versies introduceren mogelijk nieuwe specifieke foutcodes, dus welke code moet worden gebruikt voor
“alle andere fouten / niet-gespecificeerde fout”? De afsluitcodes worden afgekapt op 255, dus ik zou 99 kiezen als een “andere fout” .