Bash Exit Code of Last Command

Bash Exit Code of Last Command

Når en bash -kommando utføres, etterlater den utgangskoden, uavhengig av vellykket eller mislykket utførelse. Å undersøke utgangskoden kan gi nyttig innsikt i oppførselen til den siste løpskommandoen.

I denne guiden, sjekk ut hvordan du kan sjekke Bash Exit -kode for den siste kommandoen og noen mulige bruksområder av den.

BASH EXIT CODE

Hver UNIX/Linux -kommando utført av Shell -skriptet eller brukeren etterlater en utgangsstatus. Det er et heltall som forblir uendret med mindre neste kommando kjøres. Hvis utgangskoden er 0, var kommandoen vellykket. Hvis utgangskoden er ikke-null (1-255), betyr den en feil.

Det er mange potensielle bruksområder i bashavgangskoden. Den mest åpenbare er selvfølgelig å bekrefte om den siste kommandoen utføres riktig, spesielt hvis kommandoen ikke genererer noen utdata.

Når det gjelder bash, er utgangskoden til forrige kommando tilgjengelig ved hjelp av skallvariabelen “$?”.

Kontroller Bash Exit Code

Start en terminal, og kjør hvilken som helst kommando.

$ Dato

Sjekk verdien av skallvariabelen “$?”For exit -koden.

$ ekko $?

Da kommandoen “Dato” kjørte vellykket, er exit -koden 0. Hva ville skje hvis det var en feil?

La oss prøve å kjøre en kommando som ikke eksisterer.

$ ABCD

Sjekk exit -koden.

$ ekko $?

Det er en verdi som ikke er null, noe som indikerer at den forrige kommandoen ikke utførte ordentlig.

Nå, ta en titt på følgende kommando:

$ katteprøve.txt | grep “mynt”

Når du jobber med en kommando som har en eller flere rør, vil utgangskoden være av den siste koden som er utført i røret. I dette tilfellet er det GREP -kommandoen.

Ettersom GREP -kommandoen var vellykket, vil det være 0.

$ ekko $?

I dette eksemplet, hvis GREP-kommandoen mislykkes, vil utgangskoden ikke være null.

$ katteprøve.txt | grep “ABCD”
$ ekko $?

Innlemme exit -kode i skript

Utgangskoden kan også brukes til skripting. En enkel måte å bruke den på er ved å tilordne den til en skallvariabel og jobbe med den. Her er et eksempel på skallskriptet som bruker utgangskoden som en betingelse for å skrive ut spesifikk utgang.

$ #!/bin/bash
$ ekko "Hello World"
$ status = $?
$ [$ status -eq 0] && ekko "Kommando vellykket" || ekko "Kommando mislykket"

Når man kjøres, vil skriptet generere følgende utdata.

La oss se hva som skjer når det er en ugyldig kommando å kjøre.

$ #!/bin/bash
$ tilfeldig-kommando
$ status = $?
$ [$ status -eq 0] && ekko "Kommando vellykket" || ekko "Kommando mislykket"

Når den kjøres, vil utgangen være annerledes.

Avslutt kodeverdiforklaring

Når utgangskoden er ikke-null, varierer verdien fra 1 til 255. Nå, hva betyr denne verdien?

Mens verdien er begrenset, er forklaringen på hver verdi unik for programmet/skriptet. For eksempel har "LS" og "grep" forskjellige forklaringer på feilkode 1 og 2.

$ mann ls
$ mann grep

Definere utgangsstatus i skriptet

Når vi skriver et skript, kan vi definere tilpassede exit -kodeverdier. Det er en nyttig metode for enklere feilsøking. I bash -skript er det “exit” -kommandoen etterfulgt av exit code -verdien.

$ exit

I henhold til stevnet anbefales det å tilordne exit code 0 for vellykket utførelse og bruke resten (1-255) for mulige feil. Når du når exit -kommandoen, vil utførelsen av skallskriptet bli avsluttet, så vær forsiktig med plasseringen.

Ta en titt på følgende skallskript. Her, hvis tilstanden er oppfylt, vil skriptet avslutte med utgangskoden 0. Hvis tilstanden ikke blir oppfylt, vil utgangskoden være 1.

$ #!/bin/bash
$ hvis [["$ (whoami)" != rot]]; deretter
$ ekko "ikke rotbruker.""
$ exit 1
$ fi
$ ekko "rotbruker"
$ exit 0

Kontroller resultatet av å kjøre dette skriptet uten Sudo Privilege eller "Root" -bruker.

$ ./prøve.sh
$ ekko $?

Siste tanker

Denne guiden demonstrerer hva exit -koder er og hvordan du kan bruke dem. Det demonstrerer også hvordan du skal tilordne passende exit -koder i et bash -skript.

Interessert i bash -skripting? En av de enkleste måtene å komme i gang på er ved å skrive dine egne skript. Sjekk ut denne enkle guiden for hvordan du skriver et enkelt bash -manus.

Glad databehandling!