Jeg vil gerne vide, hvad der er afkørsel 99, og hvorfor bruger man det, og hvad er det, der bruges af det.
For eksempel , Jeg bruger exit 99
.
Kommentarer
- Næsten meget svar til SO: " Hvorfor returnere et negativt errno? (F.eks. Returnere -EIO) "
Svar
Der er ingen betydning at afslutte med kode 99, bortset fra at der måske er i sammenhæng med et bestemt program.
Uanset hvad exit
udgår skallen med en bestemt udgangskode, i dette tilfælde 99. Du kan finde mere information i 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.
Kommentarer
- Hvis du vil gøre noget specifikt med en returkode som den i bash, brug
$?
for at komme til den. - Ikke helt – 99 er ikke nul, og så indi angiver, at programmet mislykkedes af en eller anden grund.
- @psusi Der er masser af udgangskoder, der ikke er nul, i applikationer, der ikke har med fejl at gøre, men angiver andre eksekveringsbetingelser (mange programmer bruger det til at indikere forfalskning eller ikke-optimal udførelse snarere end fiasko, for eksempel). At hævde, at en bestemt exitstatus skal indikere fejl uden at kende programmet, er simpelthen ikke sandt. Jeg vandt ' t spekulerer i betydningen af " 99 " i et ukendt program.
- Skallen og de fleste andre værktøjer, inklusive fabrikat, behandler enhver udgangsværdi, der ikke er nul, som en fejl.
- Bortset fra disse indikerer kun fejl i isolation, ikke i større sammenhæng med kontrol for sandhed. Uanset hvad, nægter jeg at spekulere i betydningen af en udgangskode, når applikationen ikke er defineret.
Svar
Ud over @Chris Down er der en returkode, der er reserveret til skallen, de har særlig betydning:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Du kan henvise til dette for flere detaljer.
Kommentarer
- @MrLister: Yeap, min mistypo, fast!
- der mangler stadig en
s
derinde (" Misuage "?)
Svar
Normalt, hvis du på et tidspunkt afslutter dit script med:
exit 0
Skallen får 0 som returkode . Dette nul betyder, at alt var OK .
Men hvis dit program har fundet en eller anden fejltilstand, skal du skal afslutte med en returkode, der ikke er nul, for at informere skallen om, at noget er gået galt. Hvis du ikke vil være mere specifik, kan du blot bruge 1.
exit 1
Du kan dog informere skallen om en bestemt type fejl ved at bruge andre numre. F.eks. returnerer bash
i sig selv en 127 til program ikke fundet . Så hvis du dokumenterer opførelsen af dit script, kan du gøre noget nyttigt efter kører det ved at kontrollere værdien af den specielle variabel $?
, som indeholder returkoden for det sidst udførte program.
Jeg kiggede på dette for et stykke tid siden og fandt at for eksempel FreeBDS havde nogle meget nyttige konventioner med hensyn til udgangskoder, dokumenteret i man 3 sysexits
Kommentarer
- " Skallen får en 0 som returkode " forkert,
exit
uden parametre udgår med statuskoden for den sidste kommandokørsel. (se pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Tak, min langvarige misforståelse af mig, vil løse svaret.
- Fantastisk, downvote fjernet 🙂
Svar
Der er en meget langvarig konvention (i Unix) for retur- statusintervaller:
- 0 betyder succes
- positive tal betyder mindre problemer, men i det væsentlige er opgaven afsluttet
- negative tal betyder kritisk fejl (f.eks disk-fuld, fil-ikke-fundet)
Præcis hvad de individuelle positive og negative tal betyder, er det op til programmøren. Nogle gange kan du vælge dem for kompatibilitet med andre lignende programmer (f.eks. GNU-værktøjer). @Gnouc lister nogle.
Nej, jeg er ikke opmærksom på nogen særlig betydning for at afslutte kode 99, har aldrig set den brugt. Måske betyder det “Ikke nok øl”
Se:
- svar til SO: “Hvorfor returnere et negativt errno? (for eksempel.return -EIO) “ også
- viser en liste over standard Unix-fejlkoder, der hentes fra errno.h , selvom disse er positive .
Kommentarer
- Jeg har aldrig hørt om den Unix-konvention. Og dine to referencer understøtter ikke din påstand om denne konvention.
- Den første reference gør. Der er 1,67 m google-hits på unix return status positive negative tal .
- Der er et lille antal negative returværdier specificeret i POSIX.1 men disse er til programmering af APIer
Svar
Nogle programmerere leverer mange forskellige fejlkoder startende med 1. Nye versioner introducerer muligvis nye specifikke fejlkoder, så hvilken kode skal bruges til
“alle andre fejl / uspecificeret fejl”? Udgangskoderne bliver afkortet ved 255, så jeg vælger 99 som en “anden fejl” .