I denne vejledning skal du tjekke, hvordan du kontrollerer bash exit-kode for den sidste kommando og nogle mulige anvendelser af den.
Bash udgangskode
Hver UNIX / Linux-kommando, der udføres af shell-scriptet eller brugeren, efterlader en exit-status. Det er et heltal, der forbliver uændret, medmindre den næste kommando køres. Hvis udgangskoden er 0, blev kommandoen vellykket. Hvis udgangskoden ikke er nul (1-255), betyder det en fejl.
Der er mange potentielle anvendelser af bash exit-koden. Den mest åbenlyse er naturligvis at kontrollere, om den sidste kommando udføres korrekt, især hvis kommandoen ikke genererer noget output.
I tilfælde af bash er udgangskoden for den forrige kommando tilgængelig ved hjælp af shellvariablen “$?”.
Kontrol af Bash-udgangskode
Start en terminal, og kør enhver kommando.
$ datoKontroller værdien af shellvariablen “$?”For udgangskoden.
$ ekko $?
Da kommandoen “dato” kørte med succes, er udgangskoden 0. Hvad ville der ske, hvis der var en fejl?
Lad os prøve at køre en kommando, der ikke findes.
$ abcdTjek udgangskoden.
$ ekko $?
Det er en værdi, der ikke er nul, hvilket indikerer, at den forrige kommando ikke blev udført korrekt.
Se nu på følgende kommando:
$ katteprøve.txt | grep “mønt”
Når du arbejder med en kommando, der har et eller flere rør, vil udgangskoden være den sidste kode, der udføres i røret. I dette tilfælde er det grep-kommandoen.
Da grep-kommandoen var vellykket, vil den være 0.
$ ekko $?
I dette eksempel, hvis grep-kommandoen mislykkes, er udgangskoden ikke-nul.
$ katteprøve.txt | grep “abcd”$ ekko $?
Inkorporering af udgangskode i scripts
Udgangskoden kan også bruges til scripting. En enkel måde at bruge den på er at tildele den til en shellvariabel og arbejde med den. Her er et eksempel på et shell-script, der bruger exitkoden som en betingelse for at udskrive specifik output.
$ #!/ bin / bash$ echo "hej verden"
$ status = $?
$ [$ status -eq 0] && echo "kommando vellykket" || ekko "kommando mislykket"
Når det køres, genererer scriptet følgende output.
Lad os nu se, hvad der sker, når der er en ugyldig kommando, der skal køres.
$ #!/ bin / bash$ tilfældig-kommando
$ status = $?
$ [$ status -eq 0] && echo "kommando vellykket" || ekko "kommando mislykket"
Når den køres, vil output være anderledes.
Udgangskode Værdi Forklaring
Når udgangskoden ikke er nul, varierer værdien fra 1 til 255. Hvad betyder denne værdi nu??
Mens værdien er begrænset, er forklaringen af hver værdi unik for programmet / scriptet. For eksempel har “ls” og “grep” forskellige forklaringer på fejlkode 1 og 2.
$ mand ls$ mand grep
Definition af udgangsstatus i script
Når vi skriver et script, kan vi definere brugerdefinerede udgangskodeværdier. Det er en nyttig metode til lettere fejlfinding. I bash-scripts er det kommandoen "exit" efterfulgt af værdien for exitkoden.
$ exitI henhold til konventionen anbefales det at tildele udgangskode 0 til vellykket udførelse og bruge resten (1-255) til mulige fejl. Når du når exit-kommandoen, afsluttes shell-scriptets udførelse, så pas på placeringen.
Se på følgende shell-script. Her, hvis betingelsen er opfyldt, afsluttes scriptet med udgangskoden 0. Hvis betingelsen ikke er opfyldt, er udgangskoden 1.
$ #!/ bin / bash$ if [["$ (whoami)" != rod]]; derefter
$ echo "Ikke root-bruger."
$ udgang 1
$ fi
$ echo "root-bruger"
$ exit 0
Bekræft resultatet af at køre dette script uden sudo-privilegium eller "root" -bruger.
$ ./prøve.sh$ ekko $?
Afsluttende tanker
Denne guide viser, hvad udgangskoder er, og hvordan du kan bruge dem. Det viser også, hvordan man tildeler passende udgangskoder i et bash-script.
Interesseret i bash scripting? En af de nemmeste måder at komme i gang er ved at skrive dine egne scripts. Tjek denne enkle guide til, hvordan du skriver et simpelt bash-script.
Glad computing!