Haluan tietää, mikä on exit 99 ja miksi sitä käytettäisiin ja mitä sen merkityksellisiä käyttötarkoituksia on.

Esimerkiksi , Käytän exit 99.

Kommentit

vastaus

Koodilla 99 poistumiselle ei ole mitään merkitystä, kuin se on kenties tietty ohjelma.

Joko niin, exit poistuu kuoresta tietyllä poistumiskoodilla, tässä tapauksessa 99. Löydät lisätietoja kohdasta 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. 

Kommentit

  • Jos haluat tehdä jotain erityistä palautuskoodilla, kuten bash, käytä $? päästäksesi siihen.
  • Ei aivan – 99 ei ole nolla, ja niin indi viittaa siihen, että ohjelma epäonnistui jostain syystä.
  • @psusi Sovelluksissa on paljon nollasta poikkeavia poistumiskoodeja, jotka eivät liity vikaan, mutta viittaavat muihin suoritusolosuhteisiin (monet ohjelmat käyttävät sitä virheellisyyden osoittamiseen tai ei-optimaalinen suoritus pikemminkin kuin epäonnistuminen). Väittäminen, että tietyn poistumistilan täytyy osoittaa vika tietämättä ohjelmaa, ei yksinkertaisesti ole totta. Voin ' spekuloida " 99 " -signaalin merkityksestä jossakin tuntemattomassa ohjelmassa.
  • Kuori ja useimmat muut työkalut, mukaan lukien make, käsittelevät kaikki nollasta poikkeavat poistumisarvot virheinä.
  • Näitä lukuun ottamatta virheitä ilmoitetaan vain erikseen, ei laajemmassa tarkastuksen yhteydessä. totuuden puolesta. Joko niin, kieltäydyn spekuloimasta jonkin poistumiskoodin merkitystä, kun sovellusta ei ole määritelty.

Vastaa

@Chris Downin lisäksi on olemassa jokin palautuskoodi, joka on varattu kuorelle, ja niillä on erityinen merkitys:

RETVAL Meaning 1 General errors 2 Misusage 127 Command not found 

Voit viitata kohtaan tämä saadaksesi lisätietoja.

Kommentit

  • @MrLister: Yeap, my mististypo, korjattu!
  • sieltä puuttuu vielä s (" Misuage "?)

Vastaa

Normaalisti, jos lopetat komentosarjan jossain vaiheessa:

exit 0 

Kuori saa arvon 0, kun palautuskoodi . Tämä nolla tarkoittaa kaikki oli OK .

Jos ohjelmasi on kuitenkin löytänyt jonkin virhetilan, pitäisi poistua palautuskoodilla, joka ei ole nolla, ilmoittaakseen kuorelle, että jokin on mennyt pieleen. Jos et halua olla tarkempi, voit yksinkertaisesti käyttää merkkiä 1.

exit 1 

Voit kuitenkin ilmoittaa kuorelle tietyntyyppisistä virheistä käyttämällä muut numerot. Esimerkiksi bash palauttaa arvon 127 kohteelle ohjelmaa ei löydy . Joten jos dokumentoit skriptisi toiminnan, voit tehdä jotain hyödyllistä sen jälkeen, kun suorittamalla se tarkistamalla erityismuuttujan $? arvo, joka pitää sisällään viimeksi suoritetun ohjelman palautuskoodin.

Tutkin asiaa jonkin aikaa sitten ja löysin että esimerkiksi FreeBDS: llä oli erittäin hyödyllisiä käytäntöjä poistumiskoodien suhteen, jotka on dokumentoitu man 3 sysexits

Kommentit

vastaus

Paluu- (Unix) -käytäntö on hyvin pitkä tilavälit:

  • 0 tarkoittaa menestystä
  • positiiviset luvut tarkoittavat vähäisiä ongelmia, mutta lähinnä tehtävä suoritettu
  • negatiiviset luvut tarkoittavat kriittistä virhettä (esim levy täynnä, tiedostoa ei löydy)

Ohjelmoijan vastuulla on tarkalleen mitä yksittäiset positiiviset ja negatiiviset luvut tarkoittavat. Joskus voit valita ne yhteensopiviksi muiden vastaavien ohjelmien kanssa (esim. Gnu-työkalut). @Gnouc listaa joitain.

Ei, en tiedä mitään erityistä merkitystä poistumiskoodille 99, en ole koskaan nähnyt sitä käytettyä. Ehkä se tarkoittaa ”Ei tarpeeksi olutta”

Katso:

kommentit

  • En ole koskaan kuullut tuosta Unix-sopimuksesta. Ja molemmat viitteesi eivät tue väitettänne tästä sopimuksesta.
  • Ensimmäinen viite. unix-palautustilan positiivisilla negatiivisilla numeroilla on 1,67 miljoonaa Google-osumaa.
  • Kohdassa on määritetty pieni määrä negatiivisia palautusarvoja POSIX.1, mutta nämä ovat ohjelmointirajapinnoille

Answer

Jotkut ohjelmoijat toimittavat paljon erilaisia virhekoodeja alkaen kanssa 1. Uudet versiot saattavat ottaa käyttöön uusia erityisiä virhekoodeja, joten mitä koodia tulisi käyttää
”kaikki muut virheet / määrittelemätön virhe” -toiminnossa? Poistumiskoodit katkaistaan arvolla 255, joten valitsisin 99 ”muuksi virheeksi”. .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *