Jag vill veta vad som är utgång 99 och varför skulle man använda den och vad är betydelsefulla användningar av den.
Till exempel , Jag använder exit 99
.
Kommentarer
- Ganska lika svar på SO: " Varför returnera ett negativt fel? (T.ex. return -EIO) "
Svar
Det finns ingen betydelse för att avsluta med kod 99, förutom att det kanske finns i sammanhanget med ett specifikt program.
Hur som helst, exit
lämnar skalet med en viss utgångskod, i det här fallet, 99. Du kan hitta mer 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
- Om du vill göra något specifikt med en returkod som den i bash, använd
$?
för att komma till den. - Inte riktigt – 99 är inte noll, och så indi anger att programmet misslyckades av någon anledning.
- @psusi Det finns gott om utgångskoder som inte är noll i applikationer som inte har att göra med fel, men indikerar andra körförhållanden (många program använder det för att indikera falskhet eller icke-optimalt utförande snarare än fel, till exempel). Att hävda att en viss utgångsstatus måste indikera fel utan att känna till programmet är helt enkelt inte sant. Jag vann ' spekulerar inte i betydelsen av " 99 " i något okänt program.
- Skalet och de flesta andra verktyg, inklusive fabrikat, behandlar alla utgångsvärden som inte är noll som ett fel.
- Med undantag för dessa indikerar det bara isoleringsfel, inte i större sammanhang för kontroll för sanning. Hur som helst vägrar jag att spekulera i innebörden av någon utgångskod när applikationen inte är definierad.
Svar
Förutom @Chris Down finns det en returkod som är reserverad för skalet, de har speciell betydelse:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Du kan hänvisa till detta för mer information.
Kommentarer
- @MrLister: Yeap, my mistypo, fixat!
- det finns fortfarande en
s
där ute (" Misuage "?)
Svar
Normalt, om du avslutar skriptet någon gång med:
exit 0
Skalet får en 0 som returkod . Denna noll betyder att allt var OK .
Om ditt program har hittat något felvillkor, ska gå ut med en returkod som inte är noll, för att informera skalet om att något har gått fel. Om du inte vill vara mer specifik kan du helt enkelt använda 1.
exit 1
Du kan dock informera skalet om en viss typ av fel genom att använda andra nummer. Till exempel returnerar bash
en 127 för programmet hittades inte . Om du dokumenterar beteendet för ditt skript kan du göra något användbart efter kör den genom att kontrollera värdet på den speciella variabeln $?
, som innehåller returkoden för det senast körda programmet.
Jag tittade på det här för ett tag sedan och hittade att till exempel FreeBDS hade några mycket användbara konventioner när det gäller utgångskoder, dokumenterade i man 3 sysexits
Kommentarer
- " Skalet får 0 som returkod " fel,
exit
utan parametrar går ut med statuskoden för den senaste kommandokörningen. (se pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Tack, min långvariga missuppfattning kommer att lösa svaret.
- Bra, downvote borttagen 🙂
Svar
Det finns en mycket långvarig konvention (i Unix) för retur- statusintervall:
- 0 betyder framgång
- positiva tal betyder mindre problem, men i huvudsak slutförde uppgiften
- negativa tal betyder kritiskt fel (t.ex. disk-full, file-not-found)
Exakt vad de individuella positiva och negativa siffrorna betyder är upp till programmeraren. Ibland kan du välja dem för kompatibilitet med andra liknande program (t.ex. GNU-verktyg). @Gnouc listar några.
Nej, jag är inte medveten om någon speciell betydelse för att avsluta kod 99, har aldrig sett den används. Kanske betyder det ”Inte tillräckligt med öl”
Se:
- svar på SO: ”Varför returnera ett negativt fel? (t.ex.return -EIO) ” också
- visar en lista över Unix-felkoder som tagits bort från errno.h , även om dessa är positiva .
Kommentarer
- Jag har aldrig hört talas om den Unix-konventionen. Och dina två referenser stöder inte ditt påstående om den konventionen.
- Den första referensen gör. Det finns 1,67 m google-träffar på unix return status positiva negativa siffror .
- Det finns ett litet antal negativa returvärden som anges i POSIX.1 men dessa är för programmering av API: er
Svar
Vissa programmerare kommer att leverera många olika felkoder med start med 1. Nya versioner kan introducera nya specifika felkoder, så vilken kod ska användas för
”alla andra fel / ospecificerade fel”? Utgångskoderna kommer att trunkeras vid 255, så jag skulle välja 99 som ett ”annat fel” .