Jeg vil vite hva som er avkjørsel 99 og hvorfor skulle man bruke den og hva er betydningsbruken av den.
For eksempel , Jeg bruker exit 99
.
Kommentarer
- Ganske mye svar på SO: " Hvorfor returnere et negativt feil? (F.eks. Return -EIO) "
Svar
Det er ingen betydning å avslutte med kode 99, annet enn det er kanskje i sammenheng med et bestemt program.
Uansett går exit
skallet ut med en bestemt utgangskode, i dette tilfellet 99. Du finner mer informasjon 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 gjøre noe spesifikt med en returkode som den i bash, bruk
$?
for å komme til den. - Ikke helt – 99 er ikke null, og så indi angir at programmet mislyktes av en eller annen grunn.
- @psusi Det er mange avgangskoder som ikke er null i applikasjoner som ikke har med feil å gjøre, men indikerer andre kjøringsbetingelser (mange programmer bruker det for å indikere falskhet eller ikke-optimal utførelse i stedet for feil, for eksempel). Å hevde at en viss exit-status må indikere feil uten å kjenne programmet er rett og slett ikke sant. Jeg vant ' t spekulerer i betydningen av " 99 " i noe ukjent program.
- Skallet og de fleste andre verktøy, inkludert fabrikat, behandler alle utgangsverdier som ikke er null som en feil.
- Med unntak av disse indikerer bare feil isolert, ikke i større sammenheng med kontroll for sannhet. Uansett nekter jeg å spekulere i betydningen av en eller annen utgangskode når applikasjonen ikke er definert.
Svar
I tillegg til @Chris Down er det noen returkode som er reservert for skallet, de har spesiell betydning:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Du kan referere til dette for mer informasjon.
Kommentarer
- @MrLister: Yeap, my mistypo, løst!
- det er fortsatt en
s
der mangler (" Misuage "?)
Svar
Normalt hvis du fullfører skriptet ditt på et tidspunkt med:
exit 0
Skallet får 0 som returkode . Dette null betyr alt var OK .
Hvis programmet ditt har funnet noen feiltilstander, må du imidlertid bør gå ut med en returkode som ikke er null, for å informere skallet om at noe har gått galt. Hvis du ikke vil være mer spesifikk, kan du bare bruke 1.
exit 1
Du kan imidlertid informere skallet om spesiell type feil ved å bruke andre tall. For eksempel returnerer bash
en 127 for programmet ble ikke funnet . Så hvis du dokumenterer oppførselen til skriptet ditt, kan du gjøre noe nyttig etter kjører den ved å sjekke verdien til den spesielle variabelen $?
, som har returkoden til det sist utførte programmet.
Jeg så på dette for en stund siden og fant at for eksempel FreeBDS hadde noen veldig nyttige konvensjoner med hensyn til utgangskoder, dokumentert i man 3 sysexits
Kommentarer
- " Skallet får en 0 som returkode " feil,
exit
uten parametere går ut med statuskoden for siste kommandokjøring. (se pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Takk, langvarig misforståelse av meg, vil løse svaret.
- Flott, downvote fjernet 🙂
Svar
Det er en veldig lang konvensjon (i Unix) for retur- statusområder:
- 0 betyr suksess
- positive tall betyr mindre problemer, men egentlig fullførte oppgaven
- negative tall betyr kritisk feil (f.eks disk-full, file-not-found)
Nøyaktig hva de individuelle positive og negative tallene betyr, er opp til programmereren. Noen ganger kan du velge dem for kompatibilitet med andre lignende programmer (f.eks. GNU-verktøy). @Gnouc lister opp noen.
Nei, jeg er ikke klar over noen spesiell betydning for å avslutte kode 99, har aldri sett den brukt. Kanskje det betyr «Ikke nok øl»
Se:
- svar på SO: «Hvorfor returnere et negativt errno? (f.eks.return -EIO) « også
- viser liste over standard Unix-feilkoder hentet fra errno.h , selv om disse er positive .
Kommentarer
- Jeg har aldri hørt om Unix-konvensjonen. Og de to referansene dine støtter ikke din påstand om den konvensjonen.
- Den første referansen gjør det. Det er 1,67 meter google-treff på unix returstatus positive negative tall .
- Det er et lite antall negative returverdier spesifisert i POSIX.1, men disse er for programmering av API-er
Svar
Noen programmerere vil levere mange forskjellige feilkoder som starter med 1. Nye versjoner kan introdusere nye spesifikke feilkoder, så hvilken kode skal brukes til
«alle andre feil / uspesifiserte feil»? Utgangskodene blir avkortet ved 255, så jeg vil velge 99 som en «annen feil» .