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

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

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:

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” .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *