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
- Melko samanlainen vastaus kuin SO: " Miksi palauttaa negatiivinen virhe? (Esim. Return -EIO) "
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
- " Kuori saa 0 paluukoodiksi " väärä,
exit
ilman parametreja poistuu viimeisen komentokäynnin tilakoodista. (katso pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Kiitos, pitkäaikainen väärinkäsitykseni korjaa vastauksen.
- Hienoa, downvote poistettu 🙂
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:
- vastaus kysymykseen SO: ”Miksi palauttaa negatiivinen virhe? (esimerkiksi.return -EIO) ” myös
- näytä luettelo errno.h: sta poistetuista tavallisista Unix-virhekoodeista , vaikka nämä ovatkin positiivisia .
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”. .